目前正在大学项目中工作,我必须创建一个程序,能够在没有任何用户反馈的情况下自动使用频率分析解密基础加密。该程序将在没有空格的情况下读取加密,如:
GFSWMYOGLGDVSMFSFNKYHOSUESLLMRSPCWSBFGWPOLDMFRQMRSPLOGCPFUMUPCCSKSFOHDMPFOSXOGCOISLMESDMFRQMRSDGFRSFGQRIOGCPDDGFSLISSOGKLGMFUOISFWSNGQFOOISGNNQKKSFNSLGCSMNIDSOOSKWSNMDDOISEGLOCKSJQSFODYGNNQKKPFRDSOOSKOISCPKLOOISFSXOEGLOGNNQKKPFRDSOOSKOISLSNGFUOISCGDDGWPFREGLOGNNQKKPFRDSOOSKOISOIPKUMFULGGFQFOPDWSMNNGQFOCGKMDDOISUPCCSKSFODSOOSKLPFOISHDMPFOSXOLMEHDSOISFWSDGGBMOOISNPHISKOSXOWSWMFOOGLGDVSMFUWSMDLGNDMLLPCYPOLLYEAGDLWSCPFUOISEGLOGNNQKKPFRLYEAGDMFUNIMFRSPOOGOISCGKEGCOISCPKLODSOOSKGCOISHDMPFOSXOLMEHDSOISFSXOEGLONGEEGFLYEAGDPLNIMFRSUOGOISCGKEGCOISLSNGFUDSOOSKMFUOISCGDDGWPFREGLONGEEGFLYEAGDPLNIMFRSUOGOISCGKEGCOISOIPKUDSOOSKMFULGGFQFOPDWSMNNGQFOCGKMDDLYEAGDLGCOISNKYHOGRKMEWSWMFOOGLGDVS
不需要任何编码帮助,但寻找有关如何解析此问题的想法。
我已经有一个120k字的英语词典,前15k字是英语中最常用的。我目前正试图通过使用N-gram和大多数公共字母替换/使用的单词来解决这个问题。 感谢任何想法/更好的方法。
谢谢!
答案 0 :(得分:0)
计算每个字母出现的次数,并将其与英文的使用表进行比较。例如,识别e应该很简单。使用频率较低的字母难以识别,但如果您已经从更容易的字母中获得了一些可靠的信息,您可以尝试不同的可能性,然后将它与您的单词进行比较。
答案 1 :(得分:0)
当我完成这些事情时,我创建了一系列英文字母频率进行比较,另一个数组包含密文的字母频率。只需在两个数组之间进行相关计算就可以自动给出正确的答案(即最小化密码频率数组给定偏移的平方差之和)。