Это назначение для класса, в основном сделать метод, который может "угадать" пароль, а затем отправить его другому классу, который будет дешифровать файл. У меня есть трудная часть.
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("OLLEH"); но если я вручную введу "OLLEH" в crypto.setPassword (пароль); внутри вложенного цикла он не работает. Так что моя ошибка там, я просто не вижу ее.
Вероятно, ваш метод isPasswordValid() сравнивает строки с == вместо equals().
Это может объяснить, почему это сравнение возвращает true, когда оно против "OLLEH", но false, когда оно против String с тем же значением, но созданное с использованием new
.
Попробуйте заменить password = s;
по password = s.intern();