【发布时间】:2022-01-03 11:03:07
【问题描述】:
基本上,我创建了一个 vigenere 密码。 Vigenere Cipher matrix
这是一种用于编码消息的方法。我已经为 Vigenere 密码数组创建了二维数组。我收到要编码的 .txt 文件形式的消息。然后我将其转换为常规的“一维字符数组”。本质上是读取文本并将每个字符放入一个新数组中。
然后我还从用户那里获取密钥的输入,然后获取并重复该密钥以匹配字符数组的长度。所以现在我有一个“键数组”。
Vingere 密码的工作原理是密钥的第一个字母和文本的第一个字母匹配。所以在 X 轴上是“消息”,在 Y 轴上是“键”。
例如,如果我做关键:道路
和消息:汽车
加密的消息是:torv,
我会得到 T,因为我从 Y 轴上的 R 开始并将其与 X 轴上的 C 匹配。
这就是我设置Vigenere Cipher. 的方式,其中“字母”是this. 我只是无法将两个数组(加密密钥)和(消息)的字符“匹配”到我的 Vigenere 密码,然后保存该输入作为稍后使用的方法中的数组。目前,我不太担心大写字母等。
维吉尼密码:
public static char[][] arrayMatrix (){
char[][] arrayTabula = new char[26][26];
for (int i=0;i<26;i++){
int x = i;
for (int j=0; j<26; j++){
arrayTabula[i][j] = alphabet[x];
if (x == 25){
x = 0;
}
else
x++;
}
}
return arrayTabula;
}
我考虑过将字母表中的字母转换为数字,然后使用数字将所说的“数字”与我的制表符匹配。我只是认为这太乏味了,无法重新转换回“正常”文本。我只是想知道是否有一种直接的方法可以将我想要的 X 轴与我的“消息”和 Y 轴与我的“键”匹配,然后找到横截面点。
有人能帮帮我吗?
【问题讨论】: