
古典密码实验报告 赵凯鹏.doc
9页古典密码实验【实验原理】代换密码体制的一般定义为 M=C=K=Z26,其中 M 为明文空间、C 为密文空间、K 为密钥空间、Z 26 为 26 个整数( 对应 26 个英文字母) 组成的空间;要求 26 个字母与模 26 的剩余类集合{0,1,2,…,25}建立一一对应的关系一、 移位密码移位密码的加密实现上就是将 26 个英文字母向后循环移动 k 位,其加解密可分别表示为:c=Ek(m)=m+k(mod 26)m=Dk(c)=c-k(mod 26)其中,m、c、 k 是满足 0≤m,c,k≤25 的整数二、 乘法密码乘法密码是通过对字母等间隔抽取以获得密文,其加解密可分别表示如下:c=mk(mod 26)m=ck-1(mod26)其中,m、c、 k 是满足 0≤m,c,k≤25,且 gcd(k,26)=1 的整数三、 仿射密码仿射密码的加密是一个线性变换,将移位密码和乘法密码相结合,其加解密可分别表示为:c=Ea,b(m)=am+b(mod 26)m=Da,b(m)=a-1(c-b)(mod 26)其中:a、b 是密钥,是满足 0≤a,b≤25 和 gcd(a,26)=1 的整数,即 a 和 26 互素;a -1 表示 a 的逆元,即 a-1•a≡1 mod 26。
四、 Playfair 密码Playfair 是一个人工对称加密技术,由 Charles Wheatstone 在 1854 年发明,得名于其推广者 Lord PlayfairPlayfair 密码是一种著名的双字母单表替代密码,实际上 Playfair 密码属于一种多字母替代密码,它将明文中的双字母作为一个单元对待,并将这些单元转换为密文字母组合Playfair 密码基于一个 5×5 的字母矩阵,该矩阵通过使用一个英文短语或单词串即密钥来构造,去掉密钥中重复的字母得到一个无重复字母的字符串,然后再将字母表中剩下的字母依次从左到右、从上往下填入矩阵中例如,若密钥为“playfair is a digram cipher”,去除重复字母后,得到有效密钥“playfirsdgmche”,可得字母矩阵如图 1.1.1-1 所示图 1.1.1-1注意:字母 I,J 占同一个位置设明文字母对为(P1,P2),Playfair 密码的加密算法如下:(1) 若 P1、P2 在同一行,密文 C1、C2 分别是紧靠 P1、P2 右端的字母,其中第一列被看作是最后一列的右方( 解密时反向 );(2) 若 P1、P2 在同一列,密文 C1、C2 分别是紧靠 P1、P2 下方的字母,其中第一行被看作是最后一行的下方( 解密时反向 );(3) 若 P1、P2 不在同一行,也不在同一列,则 C1、C2 是由 P1、P2 确定的矩形其它两角的字母,且 C1 和 P1 在同一行,C2 和 P2 在同一行(解密时处理方法相同) ;(4) 若 P1=P2,则两个字母间插入一个预先约定的字母,如 q,并用前述方法处理;如 balloon,则以 ba lq lo on 来加密;(5) 若明文字母数为奇数,则在明文尾填充约定字母。
五、 维吉尼亚密码Vigenenre 密码是最著名的多表代换密码,是 16 世纪法国著名密码学家 Blaise de Vigenenre 发明的Vigenenre 密码使用一个词组作为密钥,密钥中每一个字母用来确定一个代换表,每一个密钥字母被用来加密一个明文字母,第一个密钥字母加密第一个明文字母,第二个密钥字母加密第二个明文字母,等所有密钥字母使用完后,密钥再次循环使用,于是加解密前需先将明密文按照密钥长度进行分组密码算法可表示如下:设密钥 K=(k1,k2,…,kd),明文 M=(m1,m2,…,mn),密文 C=(c1,c2,…,cn);加密变换为:c i=Eki(mi)=mi+ki(mod 26)解密变换为:m i=Dki(ci)=ci-ki(mod 26)通常通过查询维吉尼亚表进行加解密实验环境】ISES 客户端Microsoft CLR Debugger 2005 或其它调试器【实验步骤】此处以移位密码为例说明,乘法密码、仿射密码、Playfair 密码和维吉尼亚密码可参照完成一、 加解密计算(一) 加密(1) 参照实验原理,在明文栏输入所要加密的明文,在密钥栏输入相应的密钥,如下图所示。
图 1.1.1-2(2) 点击“加密”按钮,在密文文本框内就会出现加密后的密文,如图 1.1.1-3 所示图 1.1.1-3(二) 解密(1) 在密文栏相应的文本框内输入所要解密的密文,在密钥栏输入相应的密钥,如图1.1.1-4 所示图 1.1.1-4(2) 点击“解密”按钮,在明文文本框内就会出现解密后的明文,如图 1.1.1-5 所示图 1.1.1-5二、 扩展实验(1) 点击扩展实验下的按钮,进入相应算法的扩展实验面板,此处为移位密码扩展实验的面板,如图 1.1.1-6 所示图 1.1.1-6(2) 在“密钥 k”栏中输入一个介于 0~25 之间的整数,如 19,点击“确定”按钮后,系统显示出“明文-密文映射表 ”,如图 1.1.1-7 所示图 1.1.1-7(3) 在明文文本框中输入明文(如“Classical Cryptology.”) ,并点击“加密”按钮,在密文文本框内就会出现加密后的密文(如“VETLLBVTEVKRIMHEHZR” 注,系统会自动删除非英文字母,并自动将明文变换为小写字母) ,如图 1.1.1-8 所示图 1.1.1-8(4) 解密过程是加密过程的逆过程,在密文文本框中输入密文(确保密钥已经正确输入),点击“解密”按钮,即可得到相应的明文。
三、 算法跟踪(一) 加密跟踪(1) 选择要跟踪的算法即移位密码,在相应的算法计算区域填写明文和密钥2) 点击“跟踪加密”按钮,此时会弹出选择跟踪调试器对话框,如图 1.1.1-9 所示,对话框中所列出的可选调试器根据系统中所安装的调试器而不同图 1.1.1-9(3) 选择“新实例 Microsoft CLR Debugger 2005”或其它调试器并点击“是” ,打开调试器如图 1.1.1-10 所示图 1.1.1-10(4) 如果出现选择编码的对话框时选择“(自动检测) ”,进入代码跟踪界面,如图1.1.1-11 所示图 1.1.1-11(5) 选择对应 c#源代码的 xxx.cs 标签页并按下快捷键 F10 开始跟踪,如图 1.1.1-12 所示图 1.1.1-12(6) 当算法跟踪完毕后,会自动切换回实验窗口并显示计算结果7) 查看实验面板中的计算结果,然后切换回调试器,选择工具栏中的“停止调试”按钮或按下 SHIFT + F5 快捷键以停止调试,如图 1.1.1-13 所示图 1.1.1-13(8) 关闭调试器,如图 1.1.1-14 所示,弹出保存对话框,选择“否”不保存图 1.1.1-14(二) 解密跟踪跟踪解密算法时,选择要跟踪的算法,在相应的算法计算区域填写密文和密钥,点击“跟踪解密”按钮,具体参照加密跟踪步骤。












