当前位置:文档之家› 密码学课程设计-刘欣凯

密码学课程设计-刘欣凯

现代密码学实验题目:2012现代密码学实验姓名:刘欣凯学号:192102-21 院(系):计算机学院专业:信息安全指导教师:任伟职称:副教授评阅人:职称:2012 年12 月现代密码学实验原创性声明本人以信誉声明:所呈交的现代密码学实验是在导师指导下进行的研究工作及取得的研究成果,论文中引用他人的文献、数据、图件、资料均已明确标注出,论文中的结论和结果为本人独立完成,不包含他人成果及为获得中国地质大学或其他教育机构的学位或证书而使用过的材料。

与我一同工作的同志对本研究所做的任何贡献均已在论文中作了明确的说明并表示了谢意。

毕业论文作者(签字):刘欣凯签字日期:2012年12 月18 日学校代码:10491 本科生学号:20101003356现代密码学实验本科生:刘欣凯学科专业:信息安全指导老师:任伟二〇一二年十二月目录实验一古典密码算法 (5)1.1 仿射密码 (5)1.11 算法原理和设计思路 (5)1.12 关键算法分析 (5)1.13运行结果 (7)1.2古典密码hill (8)1.21古典密码hill概述 (8)1.22 算法原理和设计思路 (8)1.23 关键算法分析 (9)1.24 运行结果 (10)1.25 密码安全性分析 (10)1.3古典密码Vegenere (12)1.31古典密码Vegenere概述 (12)1.32算法原理和设计思路 (12)1.33 关键算法分析 (12)1.34 运行结果 (13)1.35密码安全性分析 (14)1.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运行结果 (20)实验三 Rabin加密和签名 (21)3.1 rabin加密解密概述 (21)3.2 算法原理和设计思想 (21)3.3 运行结果 (24)实验四公钥密码算法RSA (25)4.1 公钥密码算法RSA概述 (25)4.2 算法原理和设计思想 (25)4.3 关键算法分析 (27)4.4 运行结果 (28)4.5 密码安全性分析 (29)实验总结和体会 (30)实验一古典密码算法1.1 古典密码仿射密码1.11算法原理和设计思路加法密码和乘法密码结合就构成仿射密码,仿射密码的加密和解密算法是:C= Ek(m)=(k1m+k2) mod nM= 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,因此仿射密码的密钥空间为12×26 = 312。

仿射密码举例:设密钥K= (7, 3), 用仿射密码加密明文hot。

三个字母对应的数值是7、14和19。

分别加密如下:(7×7 + 3) mod 26 = 52 mod 26 =0(7×14 + 3) mod 26 = 101 mod 26 =23(7×19 + 3) mod 26 =136 mod 26 =6三个密文数值为0、23和6,对应的密文是AXG。

1.12关键算法分析填充矩阵,将明文输入,然后构成加密矩阵。

构成矩阵以后再进行加密运算。

这一部分是解密算法。

是加密的逆过程。

1.13运行结果1.2 古典密码Hill1.21 古典密码Hill 概述Hill 体制是1929年由Lester S.Hill 发明的,它实际上就是利用了我们熟知的线性变换方法,是在Z26上进行的。

Hill 体制的基本思想是将n 个明文字母通过线性变换转化为n 个密文字母,解密时只需要做一次逆变换即可,密钥就是变换矩阵。

1.22算法原理与设计思路1.假设要加密的明文是由26个字母组成,其他字符省略。

将每个字符与0-25的一个数字一一对应起来。

(例如:a/A —0,b/B —1,……z/Z —25)。

2.选择一个加密矩阵n n A ⨯,其中矩阵A 必须是可逆矩阵,例如⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎣⎡=15227132102123916296101571823055117A 3.将明文字母分别依照次序每n 个一组(如果最后一组不足n 个的话,就将其补成n 个),依照字符与数字的对应关系得到明文矩阵ming n n len ⨯/。

4.通过加密矩阵A ,利用矩阵乘法得到密文矩阵mi n n len ⨯/= ming n n len ⨯/⨯n n A ⨯mod 26; 将密文矩阵的数字与字符对应起来,得到密文。

5.解密时利用加密矩阵的逆矩阵1-A 和密文,可得到明文。

6. 设明文为n n Z m m m m 2621),,(∈⋯+=,密文nn Z c c c c 2621),,.,(∈⋯=,密钥为26Z 上的n*n 阶可逆方阵n n ij k K ⨯=)(,则26mod 26mod 1-==cKm mK c 解密:明文加密:密文1.23 关键算法分析欧几里德算法又称辗转相除法,用于计算两个整数a,b 的最大公约数。

产生公约数的目的是为了下一步求逆矩阵和矩阵时方便运算。

这段代码是加密的过程,主要设计思想是输入的明文与矩阵做乘法,当明文长度为矩阵阶数的倍数时,自动将明文变为列数与矩阵阶数相同,然后进行计算。

当明文长度不是矩阵阶数的倍数时,则会出现无关字符。

代码中的利用矩阵乘法得到的密文输出即可,而解密的过程只需要利用矩阵的逆矩阵,也就是我们在做乘法的时候将矩阵换为它的逆矩阵即可得到明文。

1.24 运行结果1.25 密码安全性分析经过算法分析和设计,我们可以知道它的安全强度(m是素数,模数为合数,不是任意矩阵可逆) 为 26的m*m 次方。

例如,当m=5时,得出它的安全强度为2的117次方。

通过矩阵,将信息均匀分布到每个m 长向量的每个分向量中,具有比较好的随机性,相对于其他的古典密码来说,Hill 是比较安全的。

但是在已知m 组明文、密文和解密算法的情况下,我们需要解M 组同余方程组,因此,密钥是可以恢复的。

关键是求得加密矩阵的逆—解密矩阵。

只要分析出两个明文向量(线性无关)与相应的密文向量。

若有如果甲方截获了一段密文:OJWPISWAZUXAUUISEABAUCRSIPLBHAAMMLPJJOTENH 经分析这段密文是用HILL 2密码编译的,且这段密文的字母 UCRS 依次代表了字母 TACO ,我们接着将要进行破译。

关系如下:计算矩阵的逆破译 密文向量明文向量11332244b a b a A A b a b a ⎛⎫⎛⎫⎛⎫⎛⎫== ⎪ ⎪ ⎪ ⎪⎝⎭⎝⎭⎝⎭⎝⎭13132424b b a a A b b a a ⎛⎫⎛⎫= ⎪⎪⎝⎭⎝⎭113132424b b a a A b b a a -⎛⎫⎛⎫= ⎪⎪⎝⎭⎝⎭⇒⇒11321αβA C U ==⎪⎪⎭⎫ ⎝⎛↔⎪⎪⎭⎫ ⎝⎛⎪⎪⎭⎫⎝⎛↔⎪⎪⎭⎫ ⎝⎛=A T 1201α221918αβA S R ==⎪⎪⎭⎫⎝⎛↔⎪⎪⎭⎫ ⎝⎛⎪⎪⎭⎫⎝⎛↔⎪⎪⎭⎫ ⎝⎛=O C 1532α203115A ⎛⎫ ⎪⎝⎭2118319⎛⎫= ⎪⎝⎭()122118det (mod 26)345(mod 26)7319ββ===12118319-⎛⎫ ⎪⎝⎭1918(mod 26)15(mod 26)321-⎛⎫=⋅ ⎪-⎝⎭251673⎛⎫= ⎪⎝⎭1203115A -⎛⎫= ⎪⎝⎭12118319-⎛⎫ ⎪⎝⎭⎪⎪⎭⎫ ⎝⎛=901711523902421952211016192112119113⎛⎫⎛⎫⎛⎫⎛⎫⎛⎫⎛⎫⎛⎫⎛⎫⎛⎫⎛⎫ ⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎝⎭⎝⎭⎝⎭⎝⎭⎝⎭⎝⎭⎝⎭⎝⎭⎝⎭⎝⎭189128113121015581916211313161020148⎛⎫⎛⎫⎛⎫⎛⎫⎛⎫⎛⎫⎛⎫⎛⎫⎛⎫⎛⎫⎛⎫⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎝⎭⎝⎭⎝⎭⎝⎭⎝⎭⎝⎭⎝⎭⎝⎭⎝⎭⎝⎭⎝⎭明文:Clinton is going to visit a country in Middle East1.3 古典密码 Vignere1.31 古典密码 Vignere 概述1858年法国密码学家维吉尼亚提出一种以移位替换为基础的周期替换密码。

这种密码是多表替换密码的一种。

是一系列(两个以上)替换表依次对明文消息的字母进行替换的加密方法。

1.32 算法原理与设计思路1.首先使用维吉尼亚方阵,它的基本方阵是26列26行。

方阵的第一行是a 到z 按正常顺序排列的字母表,第二行是第一行左移循环一位得到得,其他各行依次类推。

2.加密时,按照密钥字的指示,决定采用哪一个单表。

例如密钥字是bupt ,加密时,明文的第一个字母用与附加列上字母b 相对应的密码表进行加密,明文的第二个字母用与附加列的字母u 相对应的密码表进行加密,依次类推。

3.令英文字母a,b,…,z 对应于从0到25的整数。

设明文是n 个字母组成的字符串,即 m=m1m2m3m4…mn密钥字周期性地延伸就给出了明文加密所需的工作密钥 K=k1k2…kn,E (m )=C=c1c2…cn 加密:Ci=mi+kimod26解密:mi=ci-kimod26,i=1,2,3,…,n 1.33 关键算法分析39201419151420221912141597971599⎛⎫⎛⎫⎛⎫⎛⎫⎛⎫⎛⎫⎛⎫⎛⎫⎛⎫⎛⎫ ⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎝⎭⎝⎭⎝⎭⎝⎭⎝⎭⎝⎭⎝⎭⎝⎭⎝⎭⎝⎭20321202514945120115141891341251920⎛⎫⎛⎫⎛⎫⎛⎫⎛⎫⎛⎫⎛⎫⎛⎫⎛⎫⎛⎫⎛⎫ ⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎝⎭⎝⎭⎝⎭⎝⎭⎝⎭⎝⎭⎝⎭⎝⎭⎝⎭⎝⎭⎝⎭加密算法的关键是给出初始密钥,例如第一个密钥字母是e,对第一个明文字母p进行加密时,选用左边附加列上的字母e对应的那一行作为代替密码表,查处与p相对应的密文字母是T,依次类推即可得出明文。

上述代码中的生成密钥部分为核心代码,只有密钥更长,才能保证密码算法的可靠性。

解密算法和加密算法只需要减去密钥继续模26即可得到。

1.34 运行结果1.35密码安全性分析首先,破译的第一步就是寻找密文中出现超过一次的字母。

有两种情况可能导致这样的重复发生。

最有可能的是明文中同样的字母序列使用密钥中同样的字母加了密;另外还有一种较小的可能性是明文中两个不同的字母序列通过密钥中不同部分加了密,碰巧都变成了密文中完全一样的序列。

相关主题