Java ceaser密码解密对前三个字符无效

Java ceaser密码解密对前三个字符无效,java,Java,我正在研究凯瑟密码,我将每个字符移动3个位置 加密时 如果输入为“abc” 输出字符串应为“def” 它应该将每个字符向右移动3次 int encryptionCharIndex=(((i-97+3)%26)) +97; int decryptionCharIndex=(((i-97-3)%26)) +97; 但它显示的字母表中前三个字符的解密 错误字符,即a前面的字符 但应该是这样的 a = x b = y c = z 您可以添加另一个26,以处理负值(在模块之前): 您可以添加另一个2

我正在研究凯瑟密码,我将每个字符移动3个位置

加密时

如果输入为“abc”

输出字符串应为“def”

它应该将每个字符向右移动3次

int encryptionCharIndex=(((i-97+3)%26)) +97;

int decryptionCharIndex=(((i-97-3)%26)) +97;
但它显示的字母表中前三个字符的解密

错误字符,即a前面的字符

但应该是这样的

a = x
b = y
c = z

您可以添加另一个
26
,以处理负值(在模块之前):


您可以添加另一个
26
,以处理负值(在模块之前):


潜在的问题是
-3%26
给出
-3
而不是
23
@phflack。。。如果你编辑这个问题。。。。“我是”。。。不要让这个奇怪的“即时通讯”俚语到处乱转。加上大写字母和句号;p潜在的问题是
-3%26
给出
-3
而不是
23
@phflack。。。如果你编辑这个问题。。。。“我是”。。。不要让这个奇怪的“即时通讯”俚语到处乱转。加上大写字母和句号;P
int decryptionCharIndex = (((i - 97 + 26 - 3) % 26)) + 97
// Subtract 'a' -----------------^
// Add another 26 to handle negatives-^
// Decrypt --------------------------------^