我编写了一个使用 Vigenere 密码进行编码的 java 程序,加密工作正常,但是对于某些特殊情况,解密并不适用。
例如,如果纯文本是 'k' 并且密钥是 'y' 它正确地产生密文 'i' ((10 + 24 = 34 % 26 = 8))
但是,当解密密文是“i”并且密钥是“y”时,我得到((8-24)=-16%26=-16)),即使它是肯定的,也会是 Q。什么时候应该正确解密回到“k”,即 10。
有谁可以帮我离开这里吗?如果需要,我可以发布更多代码。
---链接到 wiki Viginare 密码算法http://en.wikipedia.org/wiki/Vigen%C3%A8re_cipher ---
//decryption
else{
for (int i=0; i < a.length(); i++){
for (int j=0; j < full.length(); j++){
//finding the index of the current cipher text letter
if (a.charAt(i) == full.charAt(j)){
positionP = j;
}
//finding the index of the current key letter
if(key.charAt(i)==full.charAt(j)){
positionK = j;
}
}
//using the formula for vigenere encoding it adds the newly encrypted character to the output
output = output + full.charAt((positionP - positionK)%26);
}
}