1、 现代密码学实验 题目: 2012 现代密码学实验 2012 年 12 月 密码学课程设计 1 现代密码学实验现代密码学实验 本 科 生:刘欣凯 学科专业:信息安全 指导老师:任 伟 二一二一二二年年十二十二月月 密码学课程设计 2 目目 录录 实验一实验一 古典密码算古典密码算法法.5 1.1 1.1 仿射密码仿射密码5 1.11 算法原理和设计思路.5 1.12 关键算法分析.5 1.13 运行结果7 1.21.2古典密码古典密码 hill8 1.21 古典密码 hill概述.8 1.22 算法原理和设计思路.8 1.23 关键算法分析.9 1.24 运行结果10 1.25 密码安全性分析
2、10 1.31.3 古典密码古典密码 Vegenere.12 1.31 古典密码 V egenere 概述.12 1.32 算法原理和设计思路12 1.33 关键算法分析.12 1.34 运行结果.13 1.35 密码安全性分析14 1.41.4 古典密码古典密码 Playfair.15 1.41 古典密码 Playfair 概述.15 1.42 算法原理和设计思路15 1.43 运行结果.17 1.44 密码安全性分析.17 实验二实验二 ElGamal 签名体制签名体制18 2.1 ElGamal 签名概述.18 2.2 算法原理和设计思路.18 2.3 关键算法分析.20 2.4 运行结
3、果.20 实验三实验三 RabinRabin 加密和签名加密和签名.21 密码学课程设计 3 3.1 rabin 加密解密概述21 3.2 算法原理和设计思想.21 3.3 运行结果.24 实验四实验四 公钥密码算法公钥密码算法RSARSA25 4.1 公钥密码算法 RSA 概述.25 4.2 算法原理和设计思想.25 4.3 关键算法分析.27 4.4 运行结果.28 4.5 密码安全性分析.29 实验总结和体会实验总结和体会.30 实验一实验一 古典密码算法古典密码算法 1.1 1.1 古典密码仿射密码古典密码仿射密码 1.111.11 算法原理和设计思路算法原理和设计思路 加法密 码和乘
4、法密码结合就构成仿 射密码,仿射密码的加密 和解密算法是: C= Ek(m)=(k1m+k2) mod n M= Dk(c)=k3(c- k2) mod n(其中(k3 k1)mod26 = 1) 仿射密码具有可逆性的条件是 gcd(k1, n)=1。 当 k1=1时, 仿射密码变为加法密码, 当 k2=0时,仿射密码变为乘法密码。 仿射密码中的密钥空间的大小为 n(n),当 n 为26字母,(n)=12,因此仿射密码 的密钥空间为1226 = 312。 仿射密码举例: 设密钥 K= (7, 3), 用仿射密码加密明文 hot。三个字母对应的数值是7、14和19。 分别加密如下: (77 +
5、3) mod 26 = 52 mod 26 =0 (714 + 3) mod 26 = 101 mod 26 =23 (719 + 3) mod 26 =136 mod 26 =6 三个密文数值为0、23和6,对应的密文是 AXG。 1.121.12关键算法分析关键算法分析 密码学课程设计 5 密码学课程设计 6 填充矩阵,将明文输入,然后构成加密矩阵。构成矩阵以后再进行加密运算。 这一部分是解密算法。是加密的逆过程。 1.131.13运行结果运行结果 密码学课程设计 7 1.2 1.2 古典密码古典密码 HillHill 1.21 1.21 古典古典密码密码 HillHill 概述概述 Hi
6、ll 体制是 1929 年由 Lester S.Hill 发明的,它实际上就是利用了我们熟知的线性变 换方法, 是在 Z26 上进行的。 Hill 体制的基本思想是将 n 个明文字母通过线性变换转化为 n 个密文字母,解密时只需要做一次逆变换即可,密钥就是变换矩阵。 1.221.22 算法原理与设计思路算法原理与设计思路 1.假设要加密的明文是由 26 个字母组成, 其他字符省略。 将每个字符与 0-25 的一个数字一 一对应起来。 (例如:a/A0,b/B1,z/Z25) 。 2.选择一个加密矩阵 nn A ,其中矩阵 A 必须是可逆矩阵,例如 152271321 02123916 296101 5718230 55117 A 3.将明文字母分别依照次序每 n 个一组(如果最后一组不足 n 个的话,就将其补成 n 个) , 依照字符与数字的对应关系得到明文矩阵 ming nnlen/ 。 4.通过加密