实现柱状加密技术?

时间:2014-08-04 17:46:02

标签: java

我正在研究另一种加密技术,即柱状转置密码技术。 到目前为止,我只尝试制作列,我想要做的是查看矩阵。 但是根据我编写的代码,它只在矩阵中显示一个字母:

import java.io.*;
import java.lang.reflect.Array;

public class transCip {
    public static void main(String args[]) {
        String keys;
        String message;
        String encrypt;
        String decrypt;
        message = "encryptiontextbe";
        keys = "work";
        encrypt = "";
        decrypt = "";
        char msg[] = message.toCharArray();
        char key[] = keys.toCharArray();
        int x = msg.length;
        int y = key.length;
        char temp[][] = new char[y][x];

        if (x % y != 0) {
            System.out.println("Cannot encrypt string");
        }
        for (int i = 0; i < (x/y); i++) 
        {
            for (int j = 0; j < y; j++) 
            {
                int k=0;
                temp[i][j] = msg[k];
                k++;
            }
        }
        System.out.println("Matrix");
        for (int i = 0; i < (x/y); i++)
        {
            for (int j = 0; j < y; j++) 
            {
                System.out.print(temp[i][j]);
            }
            System.out.println("");
        }
    }
}

我目前的输出如下:

Matrix
eeee
eeee
eeee
eeee

我似乎无法弄清楚为什么会发生这种情况;
我也试着在纸上解决这个问题。

1 个答案:

答案 0 :(得分:2)

for (int i = 0; i < (x/y); i++) 
    {
            for (int j = 0; j < y; j++) 
        {
        int k=0;
                temp[i][j] = msg[k];
        k++;
        }
        }

在循环的每次迭代中将k重置为零,保证始终获得消息字符串的第一个字母“e”。尝试在内循环之前初始化k。通过更好的格式化更容易发现:

for (int i = 0; i < (x/y); i++) {
    for (int j = 0; j < y; j++) {
        int k=0;
        temp[i][j] = msg[k];
        k++;
    }
}