Я довольно новичок в Java и в настоящее время работаю над шифрованием / шифрованием Vigenere.Я уже получил дешифрование и шифрование с известным ключом, единственное, что я хочу сейчас сделать - это атака по словарю.Для этого алгоритм берет строку из текстового файла и использует ее в качестве ключа для расшифровки сообщения, затем берет это расшифрованное сообщение и снова сопоставляет его со словарем (и если ключ выдает правильное слово, он будетрасшифруйте оставшуюся часть сообщения этим ключом).
public static String decoderNoKey(String msg, Scanner words) {
Scanner words2 = words;
while (words.hasNextLine()) {
String dicStr = words.nextLine();
String result = decoder(msg, dicStr);
while (words2.hasNextLine()) {
String meta = words2.nextLine();
if(result.equalsIgnoreCase(meta)) {
System.out.println("Found a matching message: " + result);
System.out.println("This is the corresponding key: " + dicStr);
return meta;
}
}
}
return "There was no matching word";
}
это мой код, декодер ();Метод работает просто отлично.Если я попытаюсь ввести действительный шифр, проблема в том, что внешний цикл while выполняется только один раз (обнаружил это поверх операторов print).Файл слов также довольно большой, более 84000 слов.