我正在尝试在 Java 中实现 Caesar 密码,但没有想法,因为我必须需要一个 char[] 键作为参数而不是 in


public static void getkey() {
char[] resultat = new char[256];
for (char r = 0; r < 256; r++) {
resultat[r] = r;
System.out.print(r);
}
}

你好,当我运行这个程序时,它向我显示了java中的所有256个字符。 但我的目标是使用像这样的字符串类型的参数。

public static void getkey(String key)

此参数是字母表的字母。 当我运行程序时,它应该替换已经存储的Caracters的位置,如图像链接所示。结果是,如果我添加"ZYXWVUTSRQPONMLKJIHGFEDCBA"作为参数,A将变为Z,B将变为Y,C = X,直到Z变为A。

并且我将不得不创建一个方法加密,因为我正在尝试创建一个凯撒密码,并且我将不得不在其他方法中调用此方法getkey(String key(来编码我的文本,我没有使用int移位,该方法的签名如下所示:

public static void encrypt(String text , char[] key)

我到处找,找不到任何答案,请有人有想法,我是Java编程的初学者。谢谢。

你想做这样的事情:

private static char[] key = ZYXWVUTSRQPONMLKJIHGFEDCBA".toCharArray(); //for reference
public String encrypt(char[] key, String plaintext){
char[] encryptedText = new char[plaintext.size];
for(int i = 0; i < plaintext.size(); i++){
int charIndex = plaintext.charAt[i] - 'A'; //normalizes to A=0, Z=24
encryptedText[i] = key[charIndex % key.length];
}
return new String(encryptedText);
}

似乎您会遇到带有"字符和其他字符的边缘情况,因此您可能需要添加一些逻辑来忽略不在加密范围内的字符。

最新更新