Java ceaser密码解密对前三个字符无效
我正在研究凯瑟密码,我将每个字符移动3个位置 加密时 如果输入为“abc” 输出字符串应为“def” 它应该将每个字符向右移动3次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
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 --------------------------------^