Java 维吉尼亚密码
Java Vigenere Cipher
我正在尝试破译Vigenere_Cipher
当我输入 BEXR TKGKTRQFARI
时,输出是 JAVAPROGRAMMING
但我想要
把 space 像 JAVA PROGRAMMING
.
我的代码
public static String VigenereDecipher(String text) {
String keyword = "SECRET";
String decipheredText = "";
text = text.toUpperCase();
for (int i = 0, j = 0; i < text.length(); i++) {
char c = text.charAt(i);
if (c < 'A' || c > 'Z') continue;
decipheredText += (char)((c - keyword.charAt(j) + 26) % 26 + 'A');
j = ++j % keyword.length();
}
return decipheredText;
}
您明确忽略了空格。您只需添加这一行:
if (c == ' ') {
decipheredText += ' ';
}
确保把它放在这一行之前:
if (c < 'A' || c > 'Z') continue;
您忽略了 space。在检查字符范围 'A' 到 'Z' 时检查 space 并将其添加到 decipheredText 作为 space 只是因为你不希望 space 被处理作为另一个角色。
我正在尝试破译Vigenere_Cipher
当我输入 BEXR TKGKTRQFARI
时,输出是 JAVAPROGRAMMING
但我想要
把 space 像 JAVA PROGRAMMING
.
我的代码
public static String VigenereDecipher(String text) {
String keyword = "SECRET";
String decipheredText = "";
text = text.toUpperCase();
for (int i = 0, j = 0; i < text.length(); i++) {
char c = text.charAt(i);
if (c < 'A' || c > 'Z') continue;
decipheredText += (char)((c - keyword.charAt(j) + 26) % 26 + 'A');
j = ++j % keyword.length();
}
return decipheredText;
}
您明确忽略了空格。您只需添加这一行:
if (c == ' ') {
decipheredText += ' ';
}
确保把它放在这一行之前:
if (c < 'A' || c > 'Z') continue;
您忽略了 space。在检查字符范围 'A' 到 'Z' 时检查 space 并将其添加到 decipheredText 作为 space 只是因为你不希望 space 被处理作为另一个角色。