密码实验报告
- 格式:doc
- 大小:939.50 KB
- 文档页数:7
实验名称:单表代替密码破译
一、 实验名称:
单表代替密码破译
二、实验目的:
1. 深入理解单表代替的机制原理
2. 综合应用单表代替的破解方法
3. 深入学习英文字母的相对使用频率在破译过程中的应用
4. 学会用编程的方法来高效处理破译密码时遇到的困难
三、 实验步骤:
①确定破译步骤
首先编程统计出密文各个字母出现的频率,与书本上的英文
字母的相对频率进行对比,将密文中出现频率较高的几个字母替
换为相应的实际英文字母。然后,编程实现解密过程(建立一个
存储可变密钥的文件,通过反复推敲、试验和修改密钥文件最终
得出正确的明文)。(统计程序源文件为tongji.cpp,解密程序源
文件为jiemi.cpp)
②开始破译
密文各个字母出现的频率
实际的英文字母相对频率
字母 相对频率% 密文
相对频率%
a 8.167 n 6.749
b 1.492 o 7.507
c 2.782 p 1.929
d 4.253 q 0.095
e 12.702 r 5.987
f 2.228 s 6.327
g 2.015 t 9.056
h 6.094 u 2.758
i 6.996 v 0.978
j 0.153 w 2.360
k 0.772 x 0.150
l 4.025 y 1.974
m 2.406 z 0.074
对照两表,选取表中频率最靠前的3个字母,分别是b对应
e,s对应t,k对应a;
在工作空间jiemi中,建立两个txt文件,miyao.txt中
存储26个英文字母按顺序对应的密钥,在miwen.txt中存
储密文。
首先将密文中的b、s、k分别对应于明文中的e、t、
a,其余用符号‘.’代替。
得到的明文为:
根据上面的内容我们无法确定明文,所以我们可以根
据字母组合来猜想一些字母。例如t.e的组合为the,e.e
的组合为there或者here。因此将f替换成h,将q换成
r。若用o来替换密文中的n时,出现大量的to.orro.的
组合,猜测为tomorrow,所以将o替换成m,将v换成w。
到此替换后执行程序,出现了大量.ream的组合,猜测是
dream,所以将a替换成d。然后对于a.d,猜测是and,
将m替换成n。对于文章开头的and.oe.entho..h,猜测是
and so even though。此时,将密钥修改后执行程序,明
文大体已现,可以确定是马丁路德金的著名演讲《I have a
dream》,但明文中语句还存在问题,就是明文中几处应为
l的地方明显错误一位m。对于这个问题,无论怎么修改密
钥,总是存在不通顺的句子和不正确的单词,因此可以确
定应该是题目有误。最后通过对仅剩的几个字母进行推测,
很快可以得出最后结果如下
miyao.txt为:
及最后的对应关系为:
字母:abcdefghijklmnopqrstuvwxyz
密钥:defgbhijq.alnom.rstuvwxyc.
其中“.”对应的字母为密文中没有出现的字母
得到的明文为:
四、心得体会:
通过本次实验,我对单表代替密码的加密机制有了更深
的了解。面对如何用单表代替破解密码有了一点心得体会,
知道了破解的步骤及方法。深刻体会到了英文字母的相对使
用频率在破译过程中的重要作用,也感受到了密码破译者的
工作的艰辛。