我正在研究另一种加密技术,柱状转位密码技术。到目前为止,我只试着制作列,而我要做的就是查看矩阵。但是用我所写的代码,它在矩阵中只显示了一个字母:
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我似乎搞不懂为什么会发生这种事;
我也试着在纸上解决跑步问题。
发布于 2014-08-04 17:54:54
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++;
}
}https://stackoverflow.com/questions/25124551
复制相似问题