gpt4 book ai didi

java - 替代加密

转载 作者:行者123 更新时间:2023-12-02 05:00:34 25 4
gpt4 key购买 nike

我正在尝试用java制作一个替代加密程序,但是我在创建代码时遇到了麻烦,我想知道你是否有任何提示。我的想法是将字母表转换成数字,然后将其与纯文本进行比较,然后生成一个新字符串发送回来。

这是我的代码:

package ComputerSecurity;

public class Substitution {

String str = "abcdefghijklmnopqrstuvwxyz";

public String encrypt(int key, String plainText){
StringBuilder temp = new StringBuilder();
for(int i=0; i< plainText.length(); i++){
int position = plainText.charAt(i);

temp.append(str.charAt(plainText.indexOf(position)+key));
}
return temp.toString();
}
}

key=3 但通过主方法 plainText 发送的内容是“hello world”。

最佳答案

我认为您尝试实现凯撒密码。

plainText.charAt(i)

返回实际的当前字符,而不是位置。您可以使用字符来查找字母表中的位置:

char c = plainText.charAt(i)
int aPos = str.indexOf(c);

然后你可以移动这个位置并得到加密的信件,但是你需要换行。这通常通过模运算来完成:

int encPos = aPos;
if (key >= 0) {
encPos = (aPos + key) % str.length();
} else {
// the key may be bigger than the alphabet length
encPos = (str.length() + ((key + aPos) % str.length())) % str.length();
}
char ec = str.indexOf(encPos);

对于每个 aPos 为 -1 的字符,您可以跳过加密。如果您这样做,那么您还可以加密空格和其他非字母字符。

您返回“数字字符串”的想法的问题在于您不知道一个字符数字在哪里结束以及下一个字符数字在哪里开始。因此,如果您想要这样做,您将必须添加分隔符,这会不必要地使您的密文膨胀。

关于java - 替代加密,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28318269/

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