ポリアルファベット暗号用の Java プログラムを作成しています。私はコードのこのセクションを持っています:
while (i != 4 && count != cipherlen) {
if ((((int) ciphertext.charAt(i)) - 65) == 0) {
plaintext[count] = (char) (90 - (((int) keyreader.charAt(i)) - 65));
}
if ((((int) keyreader.charAt(i)) - 65) > (((int) ciphertext
.charAt(i)) - 65)) {
System.out.println("first");
plaintext[count] = ((char) (90 - ((((int) keyreader.charAt(i)) - (65)) - (((int) ciphertext
.charAt(i)) - 65))));
//System.out.println(text);
}
else {
//System.out.println("second");
plaintext[count] = ((char) ((((int) ciphertext.charAt(count)) - ((int) keyreader
.charAt(i))) + 64));
}
}
の値に遭遇した場合を除いて、すべてのケースで適切に機能します。暗号テキストが A であると仮定すると、65 を減算します。その場合、ダミーの値が与えられます。
問題が何であるかを判断するのを手伝ってもらえますか?
を鍵にして暗号文AAAD
とNIFQFWBACP
すると、生成される平文はMHEMEVA=BO