Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 尝试使用字符数组(Polybius Square)解密字符串_Java_Arrays_String_Encryption - Fatal编程技术网

Java 尝试使用字符数组(Polybius Square)解密字符串

Java 尝试使用字符数组(Polybius Square)解密字符串,java,arrays,string,encryption,Java,Arrays,String,Encryption,我对stackoverflow和Java编程都是新手。我制作了一个程序,目前使用数组polybiusquare对字符串进行加密 该阵列如图所示: static char polybiusSquare[][] = { { 'A', 'B', 'C', 'D', 'E', 'F' }, { 'G', 'H', 'I', 'K', 'L', 'M' }, { '

我对stackoverflow和Java编程都是新手。我制作了一个程序,目前使用数组
polybiusquare
对字符串进行加密

该阵列如图所示:

static char polybiusSquare[][] = { { 'A', 'B', 'C', 'D', 'E', 'F' }, 
                                   { 'G', 'H', 'I', 'K', 'L', 'M' },
                                   { 'N', 'O', 'P', 'Q', 'R', 'S' }, 
                                   { 'T', 'U', 'V', 'W', 'X', 'Y' }, 
                                   { 'Z', 'E', 'T', 'A', 'O', 'N' },
                                   { 'E', 'T', 'A', 'O', 'N', 'M' } };
出于信息目的,如果“hello”是使用此密码加密的,则返回的字符串将是“2215252532”。这是基于二维阵列的坐标完成的

我现在陷入困境,因为我需要通过将数字字符串传递到数组中,以某种方式将字符串解密回正常字符


如果我将此信息发布到错误的位置或使任何内容不清楚,我们将非常感谢您的帮助,并表示歉意。

解密只意味着运行结果字符串并提取索引:

private static final char polybiusSquare[][] = { 
    { 'A', 'B', 'C', 'D', 'E', 'F' },
    { 'G', 'H', 'I', 'K', 'L', 'M' },
    { 'N', 'O', 'P', 'Q', 'R', 'S' },
    { 'T', 'U', 'V', 'W', 'X', 'Y' },
    { 'Z', 'E', 'T', 'A', 'O', 'N' },
    { 'E', 'T', 'A', 'O', 'N', 'M' } 
};

public static String decrypt (String crypt) {
    int len = crypt.length(); 
    StringBuilder plain = new StringBuilder (len / 2);

    for (int i = 0; i < len; i += 2) {
        int rowIndex = crypt.charAt(i) - '0' - 1;
        int colIndex = crypt.charAt(i + 1) - '0' - 1;
        plain.append(polybiusSquare[rowIndex][colIndex]);
    }

    return plain.toString();
}
private static final char polybiusquare[][]={
{'A','B','C','D','E','F'},
{'G','H','I','K','L','M'},
{'N','O','P','Q','R','S'},
{'T','U','V','W','X','Y'},
{'Z','E','T','A','O','N'},
{'E','T','A','O','N','M'}
};
公共静态字符串解密(字符串加密){
int len=crypt.length();
StringBuilder平面=新StringBuilder(len/2);
对于(int i=0;i

请注意,为了简洁起见,此示例代码不包含任何输入验证。在真正的解决方案中,您可能需要更具防御性。

嗨,Mureinik,当尝试测试您的代码时,我发现crypt.length有错误,因为它不是int。它应该是int还是我做错了什么?我已经对此进行了更多的研究。似乎我在这行中得到了ArrayIndexOutOfBoundsException:“plain.append(polybiusquare[rowIndex][colIndex]);”我还假设该方法需要返回一个字符串?@Kallendo96它确实应该返回一个
字符串
。是什么输入导致了这个异常?代码与您的示例输入
“2215252532”
运行得非常完美。对不起,我是个十足的白痴,正在试图破译一个表示“hello”的字符串。谢谢你的帮助,我真的很感激。