【发布时间】:2013-09-08 15:40:51
【问题描述】:
对于这件让我烦恼的简单事情需要帮助。 我见过许多类似的算法,但我想完全按照规定的方式做到这一点,以在给定的字符集数组中达到ALL可能的组合/排列。
让我们举一个密码破解暴力破解的例子
例如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);
}
}
}
}
【问题讨论】:
-
您可以使用两个循环来探索所有组合。
-
是的,但我没有。我确实想通过具体的例子来学习。不过 google 上有很多不同的
-
那是 javascript 而不是我所说的我想要的方式
-
你说你想要一个算法......现在你有了它。 SO 不是代码生成器。