gpt4 book ai didi

java - Java 中的 Vigenere/多字母密码解码器/解密器/解密器

转载 作者:太空宇宙 更新时间:2023-11-04 07:53:09 25 4
gpt4 key购买 nike

我正在尝试开发一个程序,对使用维吉尼亚密码编码的消息进行编码、解码和破解加密。我遇到困难的地方是破坏消息的[加密](没有 key )。我知道如何去做,但不知道如何编码。我的想法如下:

该程序将系统地生成潜在的 key ,其长度从 1 开始,到 26 结束。 key 将包含英文字母表中的字母,并且不区分大小写。对于每个 key 长度(1-26 之间的任何位置), key 将用字母“a”填充,然后程序将检查它们的 key 是否正确(我有另一种方法)。如果他们键入不正确,那么最后一个位置的字母将被旋转到字母表中的下一个字母。一旦最后一个字母经历了所有 26 个可能的位置,倒数第二个字母将被旋转,然后最后一个字母和倒数第二个字母将相应地旋转,依此类推(一直回到 [潜在] 键的第一个字母)。每次生成新 key 时,都会使用单独的方法检查[潜在] key ,并在找到正确的 key 时停止该方法。关键的创建过程将是这样的:

[starting with keys that are only 1 letter long]
a
b
c
...
x
y
z

[now the potential key length becomes two]
aa
ab
ac
ad
...
zw
zx
zy
zz

[eventually the potential key length becomes 26]
aaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaab
aaaaaaaaaaaaaaaaaaaaaaaaac
aaaaaaaaaaaaaaaaaaaaaaaaad
...
zzzzzzzzzzzzzzzzzzzzzzzzzw
zzzzzzzzzzzzzzzzzzzzzzzzzx
zzzzzzzzzzzzzzzzzzzzzzzzzy
zzzzzzzzzzzzzzzzzzzzzzzzzz

(希望你能看到那里的模式)

如果有人拥有或知道如何执行此操作的代码,或者可以帮助指导完成编码所需的步骤,我们将不胜感激。

谢谢!

最佳答案

编辑(现在我已经完成了数学计算)

您需要迭代大约 6*10^36 种可能的组合 - 最大的 long 值约为 9*10^18 - 小得多的数字。

话虽这么说,假设您找到了一种迭代组合的优化方法,每秒可以生成并比较一万亿 (10^12) 个组合(比普通开发人员的机器快得多),并且可以在一百万台机器上并行化它 - 这将是每年 (60*60*24*365*10^12)*10^6,或者每年检查大约 3*10^25 个组合。

以如此惊人的速度,仍然需要大约 1900 亿年才能完成所有组合。

我强烈建议您研究另一种替代方案来实现您的目标,而不是尝试每一个键。

现在(回到我原来的答案),如果您有一个合理大小的键子集想要迭代,我可以想象用一个直接的数字循环做这样的事情,将数字转换为修改后的键的基数 26。

一些伪代码:

public void runAlgorithm () {
for (int i=startKey; i<endKey; i++) {
String key = toBase26(i);
testKey(key);
}
}

使用类似 this hexavigesimal converter from wikipedia 的内容对于 toBase26 的实现(复制如下):

public static String toBase26(int number){
number = Math.abs(number);
String converted = "";
// Repeatedly divide the number by 26 and convert the
// remainder into the appropriate letter.
do
{
int remainder = number % 26;
converted = (char)(remainder + 'A') + converted;
number = (number - remainder) / 26;
} while (number > 0);

return converted;
}

关于java - Java 中的 Vigenere/多字母密码解码器/解密器/解密器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14076753/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com