Java 尝试使用字符数组(Polybius Square)解密字符串
我对stackoverflow和Java编程都是新手。我制作了一个程序,目前使用数组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' }, { '
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”的字符串。谢谢你的帮助,我真的很感激。