【发布时间】:2015-10-03 17:30:45
【问题描述】:
我正在尝试制作一个程序,可以帮助您在不知道明文和密钥的情况下破解密文。
我想在输出中提供可能的纯文本,它给出最接近的统计值和一组可能的候选键
我开始做频率分析,完成了。它帮助我分辨出每个字母表的出现,但我不知道如何从中生成键。
class Program
{
static void Main()
{
// Array to store frequencies.
int[] c = new int[(int)char.MaxValue];
// Read entire text file.
string s = File.ReadAllText("text.txt");
// Iterate over each character.
foreach (char t in s)
{
// Increment table.
c[(int)t]++;
}
// Write all letters found.
for (int i = 0; i < (int)char.MaxValue; i++)
{
if (c[i] > 0 &&
char.IsLetterOrDigit((char)i))
{
Console.WriteLine("Letter: {0} Frequency: {1}",
(char)i,
c[i]);
}
}
}
}
【问题讨论】:
-
在程序破解第一个加密字符串之前,你可能会老死。
-
@artjomB。我已添加代码,请查看。
-
如果没有密钥就这么容易解密,那么知道人们会首先使用这种加密技术。您正在寻找某种蛮力程序,可能需要数年才能获得任何结果..为什么要这样做?你为什么要从事这样的项目?你的程序将解决什么问题?
-
缺少太多信息,无法以任何有意义的方式帮助您。使用了什么密码(经典的像凯撒或现代的像 AES)?到目前为止,您取得了哪些成果(请展示一些数据)?你知道那里应该有什么样的数据(文本或二进制)?
-
公平地说,为刚进入该域的人证明可能会很有趣。看起来几乎没有威胁,如果它是一个真正想成为 warez 作家的人,我会感到安全 :)
标签: c# encryption frequency-analysis caesar-cipher