0
我有問題的代碼。 該程序正在尋找每個密碼與1個字母和3個字母。 帶2個字母的密碼該程序只能找到密碼「11」。 用5個字母相同的方式只找到「11111」。 與4/6字母該程序不找到任何密碼。密碼查找器(類似bruteforce)Java
與代碼很多「如果」遺憾的一塌糊塗,但是,這是我在想創建密碼取景器的唯一途徑。(該程序是用來操練一個個人項目)
package passwordfind10num;
import java.util.Scanner;
public class Passwordfind10num {
public static void main(String[] args) {
char[] charArray = { '1', '2', '3', '4', '5', '6', '7', '8', '9', '0',
'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'g', 'k', 'l',
'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x',
'y', 'z', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'G',
'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V',
'W', 'X', 'Y', 'Z', '!', '@', '#', '$', '%', '^', '&', '*',
'(', ')', '_', '-', '+', '=', '\\', '|', ',', '<', '>', '/',
'?', '~' };
Scanner in = new Scanner(System.in);
System.out.println("Enter a password");
String password = in.next();
String found = "";
int array = -1;
int array2 = -1;
int array3 = -1;
int array4 = -1;
int array5 = -1;
int array6 = -1;
while (!found.equals(password)) {
if (array5 == 83) {
array6++;
array5 = 0;
array4 = 0;
array3 = 0;
array2 = 0;
array = 0;
found = String.valueOf(charArray[array6] + charArray[array5]
+ charArray[array4] + charArray[array3])
+ String.valueOf(charArray[array2])
+ String.valueOf(charArray[array]);
} else if (array4 == 83) {
array5++;
array4 = 0;
array3 = 0;
array2 = 0;
array = 0;
if (array6 == -1)
found = String.valueOf(charArray[array5]
+ charArray[array4] + charArray[array3])
+ String.valueOf(charArray[array2])
+ String.valueOf(charArray[array]);
else
found = String.valueOf(charArray[array6]
+ charArray[array5] + charArray[array4]
+ charArray[array3])
+ String.valueOf(charArray[array2])
+ String.valueOf(charArray[array]);
} else if (array3 == 83) {
array4++;
array3 = 0;
array2 = 0;
array = 0;
if (array6 == -1 && array5 == -1)
found = String.valueOf(charArray[array4]
+ charArray[array3])
+ String.valueOf(charArray[array2])
+ String.valueOf(charArray[array]);
else if (array6 == -1)
found = String.valueOf(charArray[array5]
+ charArray[array4] + charArray[array3])
+ String.valueOf(charArray[array2])
+ String.valueOf(charArray[array]);
else
found = String.valueOf(charArray[array6]
+ charArray[array5] + charArray[array4]
+ charArray[array3])
+ String.valueOf(charArray[array2])
+ String.valueOf(charArray[array]);
} else if (array2 == 83) {
array3++;
array2 = 0;
array = 0;
if (array6 == -1 && array5 == -1 && array4 == -1)
found = String.valueOf(charArray[array3])
+ String.valueOf(charArray[array2])
+ String.valueOf(charArray[array]);
else if (array6 == -1 && array5 == -1)
found = String.valueOf(charArray[array4]
+ charArray[array3])
+ String.valueOf(charArray[array2])
+ String.valueOf(charArray[array]);
else if (array6 == -1)
found = String.valueOf(charArray[array5]
+ charArray[array4] + charArray[array3])
+ String.valueOf(charArray[array2])
+ String.valueOf(charArray[array]);
else
found = String.valueOf(charArray[array6]
+ charArray[array5] + charArray[array4]
+ charArray[array3])
+ String.valueOf(charArray[array2])
+ String.valueOf(charArray[array]);
} else if (array == 83) {
array2++;
array = 0;
if (array6 == -1 && array5 == -1 && array4 == -1
&& array3 == -1)
found = String
.valueOf(charArray[array2] + charArray[array]);
else if (array6 == -1 && array5 == -1 && array4 == -1)
found = String.valueOf(charArray[array3])
+ String.valueOf(charArray[array2])
+ String.valueOf(charArray[array]);
else if (array6 == -1 && array5 == -1)
found = String.valueOf(charArray[array4]
+ charArray[array3])
+ String.valueOf(charArray[array2])
+ String.valueOf(charArray[array]);
else if (array6 == -1)
found = String.valueOf(charArray[array5]
+ charArray[array4] + charArray[array3])
+ String.valueOf(charArray[array2])
+ String.valueOf(charArray[array]);
else
found = String.valueOf(charArray[array6]
+ charArray[array5] + charArray[array4]
+ charArray[array3])
+ String.valueOf(charArray[array2])
+ String.valueOf(charArray[array]);
} else {
array++;
if (array6 == -1 && array5 == -1 && array4 == -1
&& array3 == -1 && array2 == -1)
found = String.valueOf(charArray[array]);
else if (array6 == -1 && array5 == -1 && array4 == -1
&& array3 == -1)
found = String
.valueOf(charArray[array2] + charArray[array]);
else if (array6 == -1 && array5 == -1 && array4 == -1)
found = String.valueOf(charArray[array3])
+ String.valueOf(charArray[array2])
+ String.valueOf(charArray[array]);
else if (array6 == -1 && array5 == -1)
found = String.valueOf(charArray[array4]
+ charArray[array3])
+ String.valueOf(charArray[array2])
+ String.valueOf(charArray[array]);
else if (array6 == -1)
found = String.valueOf(charArray[array5]
+ charArray[array4] + charArray[array3])
+ String.valueOf(charArray[array2])
+ String.valueOf(charArray[array]);
else
found = String.valueOf(charArray[array6]
+ charArray[array5] + charArray[array4]
+ charArray[array3])
+ String.valueOf(charArray[array2])
+ String.valueOf(charArray[array]);
}
}
System.out.println("password found:" + " " + found);
}
}
請讓我們避免發佈代碼鏈接,而是在你的問題中發佈代碼,這次我爲你做了。 –
你的代碼看起來像有很多不必要的重複和不必要的複雜性,這使得我們很難理解並且爲你和我們調試。我要做的第一件事就是重構和簡化。或者更好的是,把它扔掉並重新開始。 –
我一直在寫3個字母相同的程序,它工作正常。代碼:http://pastebin.com/fZKpLXuf也許它可以幫助你。我正在試圖將該程序擴展爲6個字母......並且我怎樣才能在沒有重複的情況下再次寫入該程序?我必須檢查用戶寫入的1/2/3/4/5/6所有可能的密碼。 –