0

我有这个有效的 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]);
        }
    }
}
4

1 回答 1

0

我认为你输入的是

要加密的文本“黎明攻击”

因为这条线,key = potter(应该是小写字母)

code = args[1].charAt(index%args[1].length()) - 96;

我以 Potter 的身份输入密钥并发布您的结果。但我使用的是 potter,它工作正常。

于 2014-01-31T06:00:34.833 回答