gpt4 book ai didi

java - 在实现维吉尼亚密码方面需要帮助

转载 作者:行者123 更新时间:2023-12-02 09:48:47 25 4
gpt4 key购买 nike

我需要帮助实现维吉尼亚密码。我的输入字符串“Cat&Dog”和键“abc”应该返回“Cbv&Eqg”,但我得到“cat&eqg”,代码如下所示。

public class Main {

public static void main(String[] args) {
String a = "Cat&dog";
String b = "abc";
String c = encrypt(a , b);
System.out.println(c);
}

public static String encrypt (String text, String key){
String result = "";
for (int i = 0, j = 0; i < text.length(); i++){
char cur = text.charAt(i);
if (cur > 'a' && cur < 'z'){
result += (char)((cur + key.charAt(j) - 2 * 'a') % 26 +'a');
j = ++j % key.length();
}
else if (cur <= 'A' && cur >= 'Z'){
result += (char)((cur - key.charAt(j) -2 * 'a') % 26 +'A');
j = ++j % key.length();
}
else {
result += text.charAt(i);
}
}
return result;
}
}

最佳答案

您的案例else if(cur <= 'A' && cur >= 'Z')永远不会是真的。x <= 65 && x >= 90 中没有 x .

如果是大写字母,您需要减去“A”并添加 key 。

解决方案如下:

public static String encrypt (String text, String key){
String result = "";
for (int i = 0, j = 0; i < text.length(); i++){
char cur = text.charAt(i);
if (cur >= 'a' && cur <= 'z'){
result += (char) ((cur + key.charAt(j) - 2 * 'a') % 26 + 'a');
}
else if (cur >= 'A' && cur <= 'Z'){
result += (char) ((cur - 'A' + key.charAt(j) - 'a') % 26 + 'A');
}
else {
result += text.charAt(i);
}
j = ++j % key.length();
}
return result;
}

“Cat&Dog”wit key = “abc”的输出:

Cbv&Eqg

关于java - 在实现维吉尼亚密码方面需要帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56473226/

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