建议和反馈

请填写你的反馈内容

问答 > 密码学 > 问答详情
求助中

字母频率java10LK

我正在阅读“密码学和网络安全”一书,我一直试图编写程序对单字母密码执行字母频率攻击。 该程序需要产生十大可能的普通文本。

我对这是如何工作有点困惑,我是否正确地认为所产生的“可能的”普通文本实际上与原始纯文本相匹配的情况并非总是如此?

如果有人能够为该计划的流程提供一些指导,那就太好了。

到目前为止,我有代码;

读取密文文件。 扫描密文并生成与频率百分比匹配的字母的散列图。 将英语的相对频率存储在2d数组中。

我的下一步是尝试按照与char的百分比最接近的匹配顺序对数组进行排序。 这是朝着正确的方向发展的吗?


2019-07-20
0
请先登陆或注册

KPI加密2019-07-20

我不是密码学方面的专家,但我认为你过于简单化了。 是的,密码学家的一个有用工具是一个相对频率的字母表。 但是,我认为,任何给定文件与整体频率完全匹配的概率都非常小。 就像在英语中一样,最常见的字母是,我记得,E,T,A,O,N,R,I,S,H。假设在您的加密文本中,您会发现最常见的9个字母是A,B,C ,D,E,F,G和H.是否自动遵循A必须映射到E,B到T,C到A等? 当然不是。 假设这个特定文档是关于安装Xerox打印机的。 经常出现的“Xerox”这个词很可能会使X比普通文档中的要高得多。 假设这是唯一不常见的频率,所以现在你最常用的字母是E,T,X,A,O,N,R,I和S.假设A映射到E,B映射到T仍然有效。 但是当X卡在序列的中间时,从那里开始,所有假定的映射都将是错误的。

我认为你实际上打破这样一个简单的替换密码的方法是尝试一两个字母,然后检查结果,看看哪些是合理的。 您还可以查找其他线索,例如经常出现在一起的字母,或通常出现在单词开头或结尾的字母(假设加密文本保留单词中断)。

作为一个学习编程练习,这可能很有趣。 但作为一个严肃的破解程序...并不是那么简单。


投一票
评论(0)
赞赏(0)
邀请

感谢您的善举,每一次解答会成为新人的灯塔,回答被采纳后获得20算力和相应的LK币奖励