我试图在java中实现一个caesar密码,但没有想法,因为我需要一个char[]键作为参数,而不是int移位

我试图在java中实现一个caesar密码,但没有想法,因为我需要一个char[]键作为参数,而不是int移位,java,caesar-cipher,Java,Caesar Cipher,此参数是字母表中的字母。当我运行程序时,它应该替换已存储的字符的位置,如imagelink中所示。结果是,如果我加上“ZYXWVUTSRQPONMLKJIHGFEDCBA”作为参数,a会变成Z,B会变成Y,C=X,直到Z变成a 我必须创建一个方法encrypt,因为我试图创建一个caesar密码,我必须调用这个方法getkey(String key)来对我的文本进行编码,我没有使用int移位,该方法的签名如下所示: public static void getkey(String key) 我

此参数是字母表中的字母。当我运行程序时,它应该替换已存储的字符的位置,如imagelink中所示。结果是,如果我加上“ZYXWVUTSRQPONMLKJIHGFEDCBA”作为参数,a会变成Z,B会变成Y,C=X,直到Z变成a

我必须创建一个方法encrypt,因为我试图创建一个caesar密码,我必须调用这个方法getkey(String key)来对我的文本进行编码,我没有使用int移位,该方法的签名如下所示:

public static void getkey(String key)

我到处找,没有找到任何答案,请问有人有什么想法吗,我是java编程的初学者。谢谢。

您想做这样的事情:

public static void encrypt(String text , char[] key)
private static char[]key=ZYXWVUTSRQPONMLKJIHGFEDCBA.tocharray();//供参考
公共字符串加密(字符[]密钥,字符串明文){
char[]encryptedText=新字符[plaintext.size];
对于(int i=0;i

似乎您将有带有“”字符和其他字符的边缘大小写,因此您可能需要添加一些逻辑来忽略不在您加密范围内的字符。

文本是大写、小写或两者都是?在这种情况下,应该怎么做?文本是大写的。例如,当我运行使用参数加密的方法时,字符串文本=”HALLO ANNA”,char[]key=我们从方法getkey(字符串key)获得密钥,如果密钥是“ZYXWVUTSRQPONMLKJIHGFEDCBA”,则结果应该是=“SZOOL ZMMZ”“因为A应该变成Z,H变成S,L变成O。实际上这是一个凯撒密码。当A变成Z,B变成Y,它一直持续到Z变成A。我解释否决票的评论,即减去41是错误的,被删除了,所以我要再说一遍:从
char
值中减去41不会将
A
标准化为
0
,因为
A
的值不是41,而是65。这种混淆可能源于这样一个事实。我最初写了65,但当我怀疑自己时,却在ascii表中错误地查找了它。所以为什么不使用
-“A”
,这样就不会有错误,代码有助于记录自己?
public static void encrypt(String text , char[] key)
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);
}