初始化二维数组 - 密码表

3

我需要创建一张密码表,但是我不知道该怎么做。以下是相关代码:

public class Prog3Cipher {
    // INSTANCE VARIABLES
    static char [ ] keyList; // VARIABLE DESCRIPTION COMMENT
    static char [ ][ ] cipherTable; // VARIABLE DESCRIPTION COMMENT
    String alpha = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";

    public Prog3Cipher( char code, String key ) {
        String[] keyList = new String []{"key"};
        cipherTable = new char[26][26];
        cipherTable[0][0] = 'H';
        for(int x = 0; x < cipherTable.length; x++){
            for(int y = 0; y < cipherTable.length; y++){
                cipherTable[x][y] = alpha.charAt(y);
            }
        }
        System.out.println(Arrays.deepToString(cipherTable));
    }

输出:

[[A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z], [A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z], [A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z],

一遍又一遍。目前我会提供' H '和' key '作为输入,但 代码 和 关键字 将被给出。表格应该如下所示,忽略蓝色行和列:

enter image description here

图片中的代码是'H',因此[0][0]元素是'H',字母在相邻的行和列中继续。 我将使用完成的表格来编码和解码消息,但现在我只需要表格正确无误。
1个回答

5

根据您分享的图片,可以说对于中的每个单元格,字符应该是行索引加上列索引再加上7(一个看似随意的魔术数字)的位置上的字符,当然还要取模字母表的大小。如果用Java表达:

int offset = 'H' - 'A';
cipherTable = new char[26][26];
for (int x = 0; x < cipherTable.length; x++) {
    for(int y = 0; y < cipherTable[0].length; y++) {
        cipherTable[x][y] = alpha.charAt((x + y + offset) % alpha.size());
    }
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接