我有这个Vigenère密码可以使用,但是当我放"Attack at Dawn"
(POTTER)时,它会在第一次加密时吐出一个号码。它出现为1inuhc Qi Xubf
。造成这种情况的原因是什么?
public class vigenere {
public static void main(String[] args) {
System.out.println();
char[] message = args[0].toCharArray();
int code;
int index = 0;
code = args[1].charAt(index%args[1].length()) - 96;
for(int i = 0; i < message.length; i++){
code = args[1].charAt(index%args[1].length()) - 96;
if(65 <= message[i] && message[i] <= 90){
index++;
message[i] = (char) (65 + ((message[i] - 65) + code) % 26);
}
else if(97 <= message[i] && message[i] <= 122){
index++;
message[i] = (char) (97 + ((message[i] - 97) + code) % 26);
}
System.out.print(message[i]);
}
}
}
答案 0 :(得分:0)
我认为您输入的是
要加密的文字“黎明时分的攻击”
key = potter(应该是所有小写字母右边)因为这行
code = args[1].charAt(index%args[1].length()) - 96;
我输入密钥作为Potter并将结果公布。但我使用波特,它工作正常。