可以自由生成任意长度的密码。
当遍历完当前长度的所有密码后,会自行递归遍历更高长度的密码。
具体可以干啥,懂得都懂。
public static void main(String[] args) {
int number=0;
String password ="";//程序终止后可以用上次运行的结果修改此赋值后继续破解。
do {
password = CreateNextPassword(password);
System.out.println (password);
/*
在这里添加你想要增加的检测代码。
*/
}while (number ++>99999){break ;}//可以通过次数来限制。
}
public String CreateNextPassword(String Currentpassword){
char[] CharRange= "1234567890".toCharArray(); //字符串可以更改为你预估的破解范围。
if (Currentpassword ==""){
Currentpassword = CharRange[0]+"";
}
char[] CurrentpasswordGroup = Currentpassword.toCharArray();
int CurrentChange = CurrentpasswordGroup.length-1;
do{
char ChangeChar = ChangeToNext( CurrentpasswordGroup[CurrentChange], CharRange);
CurrentpasswordGroup[CurrentChange] = ChangeChar;
if (ChangeChar==CharRange[0]){
CurrentChange --;
// System.out.println("错位 "+String.valueOf(CurrentpasswordGroup)+ " "+ CurrentChange);
if (CurrentChange==-1){
return CharRange[0] +String.valueOf(CurrentpasswordGroup);
}
// ChangeToNext();
}else{
break;
}
}while(true);
return String.valueOf(CurrentpasswordGroup);
}
private char ChangeToNext (char CurrentChar ,char [] CharRange) {
for (int i = 0; i < CharRange.length; i++) {
if (CurrentChar==CharRange[i]) {
if (i == CharRange.length - 1) {
CurrentChar = CharRange[0];
}else{
CurrentChar = CharRange[i+1];
}
break;
}else{
if (CurrentChar==CharRange[i]) {//不合规的直接改成原始数据
if (i == CharRange.length - 1) {
CurrentChar = CharRange[0];
}
}
}
}
return CurrentChar;
}