我正在尝试在Java中实现凯撒密码,但没有任何想法,因为我需要使用char []键作为参数,而不是int移位

问题描述 投票:0回答:1
 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个字符。像这样java console但是我的目标是像这样使用String类型的参数。

public static void getkey(String key)

此参数是字母。当我运行programm时,它应该替换imagelink中显示的已经存储的角色的位置。结果是,如果我添加“ ZYXWVUTSRQPONMLKJIHGFEDCBA”作为参数,则A将变为Z,B将变为Y,C = X,直到Z变为A。

并且我将不得不创建一个crypto方法,因为我正试图创建一个凯撒密码,并且我将不得不调用此方法getkey(String key)来编码我的文本,我没有使用int shift,该方法的签名如下所示:

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

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

java caesar-cipher
1个回答
0
投票

您想做这样的事情:

private static char[] key = ZYXWVUTSRQPONMLKJIHGFEDCBA".toCharArray(); //for reference

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

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

© www.soinside.com 2019 - 2024. All rights reserved.