Vigenère密码实现输出意外的数字

时间:2014-01-31 05:43:11

标签: java encryption vigenere

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

1 个答案:

答案 0 :(得分:0)

我认为您输入的是

要加密的文字“黎明时分的攻击”

key = potter(应该是所有小写字母右边)因为这行

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

我输入密钥作为Potter并将结果公布。但我使用波特,它工作正常。