私を悩ませているこの単純なことの助けが必要です。私は多くの同様のアルゴリズムを見てきましたが、指定された文字セット配列で可能なすべての組み合わせ/順列に到達するために、これを正確に指定された方法で実行したいと考えています。
パスワードクラッカーブルートフォーサーの例を見てみましょう
例えば char[] charset = "ABCDEFGHIJKLMNOPQRSTUVWXYZ".toCharArray();
?
述べられた方法:
こんな感じです。現在の例では。
a,b,c,d......z then at last index "z".
it goes like
aa,ab,ac....az. then
ba,bb,bc,bd........bz then
same for ca, cb, and so on.
aaaa,aaab,aaac......aaaz then
baaa,baab,baac.......baaz to zzzzzzzzzzzzzzzzzzzzzzzzzz
これまでに到達したコード:
(ただし、解決策ではありません)文字セット配列の長さと同じ数の for ループを使用することです。それは非常識です。これはうまくいきます。しかし、私はインテリジェントなものが必要です。
public class Bruteforcer {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
char[] charset = "ABCDEFGHIJKLMNOPQRSTUVWXYZ".toCharArray();
int currentIndex = 0;
String currentString = "";
for (int i = 0; i < charset.length; i++) {
char currentChar = charset[i];
for (int j = 0; j < charset.length; j++) {
char c = charset[j];
currentString = "" +currentChar + c;
System.out.println(currentString);
}
}
}
}