gpt4 book ai didi

java - Vigenere 密码输出

转载 作者:行者123 更新时间:2023-12-03 23:13:41 25 4
gpt4 key购买 nike

我正在查看 http://rosettacode.org/wiki/Vigen%C3%A8re_cipher#Java 上提供的 Vigene Ciphere 源代码.我尝试自己测试该程序,但它并没有输出我期望的基于 vigene 的值。例如,“dog”是单词,“bob”是 key ,我希望它被加密为“ech”,但实际上是“qot”。

public static void main(String[] args) {
String key = "bob";
String ori = "dog";
String enc = encrypt(ori, key);
System.out.println(enc);

}

static String encrypt(String text, final String key) {
String res = "";
text = text.toLowerCase();
for (int i = 0, j = 0; i < text.length(); i++) {
char c = text.charAt(i);
if (c < 'a' || c > 'z') continue;
res += (char)((c + key.charAt(j) - 2 * 'A') % 26 + 'A');
j = ++j % key.length();
}
return res;
}

但是输出是不同的。这是因为我对密码的理解不正确,还是对众所周知的 vigenere 密码采取了不同的方法。

最佳答案

正如用户已经指出的那样,您应该将该行更改为:

res += (char)((c + key.charAt(j) - 2 * 'a') % 26 + 'a');

或者,您可以更改此设置:

if (c < 'a' || c > 'z') continue;

为此:

if (c < 'A' || c > 'Z') continue;

只需确保将 ASCII 转换回字母时,您使用的是正确的 ASCII 值(即 65 (A) 表示大写,97 (a) 表示小写).

关于java - Vigenere 密码输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33217899/

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