这个vigenere密码在Java中是否可行?

时间:2016-02-26 03:30:35

标签: java encryption vigenere

解雇扫描仪并提示我有的vigenere密码:

x = 0
y = 0
s="";

for y in range(1, 11):
    for z in range(1, 11):
        s=s+"  "+str(y*z)
    s=s+"\n"
  
print(s);

我对vigenere密码的想法是有一个for循环捕获明文字的每个字符。然后让第二个for循环捕获关键字的每个字母。明文"第一"将代表该信的原始位置。关键字将代表明文字符的每个单独的移位。这可能吗?

1 个答案:

答案 0 :(得分:0)

你的问题是你有2个循环,但你应该只有1个循环。

而不是键的循环,你应该在键长度上使用modulous来为你提供迭代的转换。

修复逻辑(并为变量提供合理的名称):

for (int i = 0; i < text.length(); i++){
    int letter = text.charAt(i);
    int shift = key.charAt(i % key.length()) - 'A';
    int encrypted = (letter + shift) % 26 + 'A';
    output = output + (char)encrypted;
}

此代码与您的代码的主要区别在于表达式i % key.length(),它连续循环键的字母以确定每个字母的移位。