我正在尝试用Java创建一个应用程序来检查我的密码安全性。 这就是我已经做过的事情:
import java.util.Arrays;
public class BruteForce {
public static void main(String[] args) {
String password = "123123";
char[] charset = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ".toCharArray();
BruteForce bf = new BruteForce(charset, 1);
String attempt = bf.toString();
while (true) {
if (attempt.equals(password)) {
System.out.println("Password Found: " + attempt);
break;
}
attempt = bf.toString();
System.out.println("" + attempt);
bf.increment();
}
}
private char[] cs; // Character Set
private char[] cg; // Current Guess
public BruteForce(char[] characterSet, int guessLength) {
cs = characterSet;
cg = new char[guessLength];
Arrays.fill(cg, cs[0]);
}
public void increment() {
int index = cg.length - 1;
while(index >= 0) {
if (cg[index] == cs[cs.length-1]) {
if (index == 0) {
cg = new char[cg.length+1];
Arrays.fill(cg, cs[0]);
break;
}
else {
cg[index] = cs[0];
index--;
}
}
else {
cg[index] = cs[Arrays.binarySearch(cs, cg[index]) + 1];
break;
}
}
}
@Override
public String toString() {
return String.valueOf(cg);
}
}
但是我需要很长时间才能得到“123123”作为密码(也许我甚至没有得到它,我不确定)... 有没有更好的方法用上/下字母和数字做这个?谢谢。