это вопрос взлома кода. Грубая сила является важной и основной алгоритмической парадигмой.В алгоритме грубой силы задача решается самым простым способом на основе постановки задачи и определения терминов.Алгоритмы грубой силы предназначены для решения проблем без учета требуемых вычислительных ресурсов, где в некоторых вы изучаете каждое возможное решение, пока не найдете работающее.Разбейте ключ (найдите a и b), используемый для шифрования с использованием грубой силы, где вы знаете открытый текст и зашифрованный текст.Предположим, что он был зашифрован с использованием одного шифра f (p) = (ap + b).
, и это мой код, есть ли другой способ сделать это?
public static int[] findKeys(String plaintext, String ciphertext){
int[] keys = new int[2];
int temp, a = 0, b = 0;
char p, c;
for (int i = 0; i < plaintext.length(); i++) {
p = plaintext.charAt(i);
c = ciphertext.charAt(i);
for (int x = 0; x <= 9; x++) {
a = a + x;
for (int y = 0; y <= 9; y++) {
b = b + y;
temp = (int) p - 65; //convert to int
temp = Math.floorMod((a * temp + b), 26);
p = (char) (temp + 65); //convert to char
if (p == c) {
keys[0] = a;
keys[1] = b;
}
}
}
}
return keys;
}