gpt4 book ai didi

java - 单字母密码解密?

转载 作者:行者123 更新时间:2023-12-01 14:36:57 24 4
gpt4 key购买 nike

有人能看到我在这里做错了什么吗?我有一个算法,通过将字符串沿数组移动 14 个空格来加密字符串,但是当我尝试解密它时,某些字母会重复
加密时: abcdefghijklmnopqrstuvwxyz == opqrstuvwxyzabcdefghijklmn
解密后: opqrstuvwxyzabcdefghijklmn == abcdefghijklklabcdefghijkl

char[] plaintext = input.toCharArray();

for(int i = 0; i<plaintext.length; i++) {
for(int j = 0 ; j<26; j++) {
if(j>=14 && plaintext[i]==alphabet[j]) {
plaintext[i] = alphabet[j-14];
break;
}

else if(plaintext[i] == alphabet[j] && j<14 ) {
plaintext[i] = alphabet [j+14] ;
}
}
}

最佳答案

问题在于,当字符为 >= 14 时,您应用的操作不一样。或< 14 ,而且它也是错误的,因为它可能会超出范围。

你所做的是:

  • 18 (>= 14) -> 18 - 14 = 4但是18 + 14 = 32 = 26+66 != 4
  • 13 (<14) -> 13 + 14 = 27这是越界的。

该方法不正确,您应该使值环绕字母表数组,这可以使用 mod 轻松完成。 %运算符:

newIndex = (oldIndex+shift) % alphabetLength

如果不使用适当的工具,每一项简单的任务都会变得容易出错且难以维护。您也可以不使用模数来完成此操作,但计算应该是正确的,即加和减 14到字母表索引肯定不会创建有效的映射。

关于java - 单字母密码解密?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16406065/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com