这是一个课程作业,基本上是一个可以猜测"密码然后将其发送到另一个将解密文件的类。我完成了很多困难。
import sussex.edu.Cryptography;
public class Final {
public static void main(String[] args) throws Exception{
//decrypter();
Cryptography crypto = new Cryptography();
String encrypted = "SourceFile_encrypted.txt";
String decrypted = "SourceFile_decrypted.txt";
String password = new String();
crypto.setPassword(password);
if(crypto.isPasswordValid()){
System.out.println("Found password:" + password);
crypto.decryptFile(encrypted, decrypted);
}
else{
//Keep trying...
}
}
public static String decrypter(){
char array[] = new char[5];
Cryptography crypto = new Cryptography();
String password = new String();
for (char c0 = 'A'; c0 <= 'Z'; c0++) {
array[0] = c0;
for (char c1 = 'A'; c1 <= 'Z'; c1++) {
array[1] = c1;
for (char c2 = 'A'; c2 <= 'Z'; c2++) {
array[2] = c2;
for (char c3 = 'A'; c3 <= 'Z'; c3++) {
array[3] = c3;
for (char c4 = 'A'; c4 <= 'Z'; c4++){
array[4] = c4;
String s = new String(array);
password = s;
System.out.println(password);
crypto.setPassword(password);
if(crypto.isPasswordValid()){
break;
}
}
}
}
}
}
return password;
}
}
它遍历所有可能的密码,并超过实际密码(OLLEH)并且什么都不做。当我手动输入密码到第一个crypto.setPassword(密码)时;它工作得很好。 当我输入它时,它看起来像crypto.setPassword(&#34; OLLEH&#34;); 但如果我手动输入&#34; OLLEH&#34;进入crypto.setPassword(密码);在嵌套的for循环中,它不起作用。所以我的错误在那里,我无法看到它。
答案 0 :(得分:2)
你的isPasswordValid()方法可能正在将字符串与==而不是equals()进行比较。
这可以解释为什么当这个比较与“OLLEH”相反时返回true,但是当它与具有相同值的String相对时返回false,但是使用new
创建。
尝试用password = s;
替换password = s.intern ();