如何使用频率分析解析加密段落?

时间:2015-12-07 04:40:02

标签: c# c++ security encryption frequency-analysis

目前正在大学项目中工作,我必须创建一个程序,能够在没有任何用户反馈的情况下自动使用频率分析解密基础加密。该程序将在没有空格的情况下读取加密,如:

  

GFSWMYOGLGDVSMFSFNKYHOSUESLLMRSPCWSBFGWPOLDMFRQMRSPLOGCPFUMUPCCSKSFOHDMPFOSXOGCOISLMESDMFRQMRSDGFRSFGQRIOGCPDDGFSLISSOGKLGMFUOISFWSNGQFOOISGNNQKKSFNSLGCSMNIDSOOSKWSNMDDOISEGLOCKSJQSFODYGNNQKKPFRDSOOSKOISCPKLOOISFSXOEGLOGNNQKKPFRDSOOSKOISLSNGFUOISCGDDGWPFREGLOGNNQKKPFRDSOOSKOISOIPKUMFULGGFQFOPDWSMNNGQFOCGKMDDOISUPCCSKSFODSOOSKLPFOISHDMPFOSXOLMEHDSOISFWSDGGBMOOISNPHISKOSXOWSWMFOOGLGDVSMFUWSMDLGNDMLLPCYPOLLYEAGDLWSCPFUOISEGLOGNNQKKPFRLYEAGDMFUNIMFRSPOOGOISCGKEGCOISCPKLODSOOSKGCOISHDMPFOSXOLMEHDSOISFSXOEGLONGEEGFLYEAGDPLNIMFRSUOGOISCGKEGCOISLSNGFUDSOOSKMFUOISCGDDGWPFREGLONGEEGFLYEAGDPLNIMFRSUOGOISCGKEGCOISOIPKUDSOOSKMFULGGFQFOPDWSMNNGQFOCGKMDDLYEAGDLGCOISNKYHOGRKMEWSWMFOOGLGDVS

不需要任何编码帮助,但寻找有关如何解析此问题的想法。

我已经有一个120k字的英语词典,前15k字是英语中最常用的。我目前正试图通过使用N-gram和大多数公共字母替换/使用的单词来解决这个问题。 感谢任何想法/更好的方法。

谢谢!

2 个答案:

答案 0 :(得分:0)

计算每个字母出现的次数,并将其与英文的使用表进行比较。例如,识别e应该很简单。使用频率较低的字母难以识别,但如果您已经从更容易的字母中获得了一些可靠的信息,您可以尝试不同的可能性,然后将它与您的单词进行比较。

答案 1 :(得分:0)

当我完成这些事情时,我创建了一系列英文字母频率进行比较,另一个数组包含密文的字母频率。只需在两个数组之间进行相关计算就可以自动给出正确的答案(即最小化密码频率数组给定偏移的平方差之和)。