当前位置:文档之家› 中国矿业大学 密码学课程设计

中国矿业大学 密码学课程设计

密码学课程设计报告张辰洋信息安全08-3班学号:******** 2011年6月25日目录实验一古典密码算法 (1)1.1 古典密码Hill (1)1.11 古典密码Hill概述 (1)1.14 运行结果 (2)1.15 密码安全性分析 (3)1.2 古典密码 Vignere (4)1.21 古典密码 Vignere概述 (4)1.22 算法原理与设计思路 (4)1.23 关键算法分析 (4)1.24 运行结果 (5)1.25 密码安全性分析 (6)1.3古典密码Playfair (6)1.31 古典密码Playfair概述 (6)1.32 算法原理与设计思路 (6)1.34 运行结果 (8)1.35 密码安全性分析 (8)1.4古典密码Vernam (8)1.41 古典密码Vernam概述 (8)1.42 算法原理与设计思想 (9)1.43 关键代码分析 (9)1.44 运行结果 (10)1.45 安全性分析 (10)实验二分组密码DES加密解密 (11)2.1 分组密码DES加密解密概述 (11)2.2 算法原理与设计思想 (11)2.3 DES加密解密主要算法分析 (12)2.4 运行结果 (13)2.5 密码安全性分析 (14)实验三公钥密码算法RSA (15)3.1 公钥密码算法RSA概述 (15)3.2 算法原理与设计思想 (15)3.3 关键算法分析 (16)3.4 运行结果 (17)3.5 密码安全性分析 (18)实验总结和体会 (19)实验一 古典密码算法1.1 古典密码Hill1.11 古典密码Hill 概述Hill 体制是1929年由Lester S.Hill 发明的,它实际上就是利用了我们熟知的线性变换方法,是在Z26上进行的。

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

1.12算法原理与设计思路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),,(∈⋯+=,密文n n Z c c c c 2621),,.,(∈⋯=,密钥为26Z 上的n*n 阶可逆方阵n n ij k K ⨯=)(,则26mod 26mod 1-==cK m mK c 解密:明文加密:密文1.13 关键算法分析欧几里德算法又称辗转相除法,用于计算两个整数a,b的最大公约数。

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

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

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

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

1.14 运行结果1.15 密码安全性分析经过算法分析和设计,我们可以知道它的安全强度(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ββ===破译密文向量明文向量明文:Clinton is going to visit a country in Middle East1.2 古典密码 Vignere1.21 古典密码 Vignere 概述1858年法国密码学家维吉尼亚提出一种以移位替换为基础的周期替换密码。

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

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

1.22 算法原理与设计思路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,…,n1.23 关键算法分析12118319-⎛⎫ ⎪⎝⎭1918(mod 26)15(mod 26)321-⎛⎫=⋅ ⎪-⎝⎭251673⎛⎫= ⎪⎝⎭1203115A -⎛⎫= ⎪⎝⎭12118319-⎛⎫ ⎪⎝⎭⎪⎪⎭⎫ ⎝⎛=901711523902421952211016192112119113⎛⎫⎛⎫⎛⎫⎛⎫⎛⎫⎛⎫⎛⎫⎛⎫⎛⎫⎛⎫ ⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎝⎭⎝⎭⎝⎭⎝⎭⎝⎭⎝⎭⎝⎭⎝⎭⎝⎭⎝⎭189128113121015581916211313161020148⎛⎫⎛⎫⎛⎫⎛⎫⎛⎫⎛⎫⎛⎫⎛⎫⎛⎫⎛⎫⎛⎫ ⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎝⎭⎝⎭⎝⎭⎝⎭⎝⎭⎝⎭⎝⎭⎝⎭⎝⎭⎝⎭⎝⎭39201419151420221912141597971599⎛⎫⎛⎫⎛⎫⎛⎫⎛⎫⎛⎫⎛⎫⎛⎫⎛⎫⎛⎫ ⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎝⎭⎝⎭⎝⎭⎝⎭⎝⎭⎝⎭⎝⎭⎝⎭⎝⎭⎝⎭20321202514945120115141891341251920⎛⎫⎛⎫⎛⎫⎛⎫⎛⎫⎛⎫⎛⎫⎛⎫⎛⎫⎛⎫⎛⎫ ⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎝⎭⎝⎭⎝⎭⎝⎭⎝⎭⎝⎭⎝⎭⎝⎭⎝⎭⎝⎭⎝⎭加密算法的关键是给出初始密钥,例如第一个密钥字母是e,对第一个明文字母p进行加密时,选用左边附加列上的字母e对应的那一行作为代替密码表,查处与p相对应的密文字母是T,依次类推即可得出明文。

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

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

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

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

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

假如我们限制在长序列的范围内,那么第二种可能性可以很大程序地被排除,这种情况下,我们多数考虑到4个字母或4个以上的重复序列。

其次,破译的第二步是确定密钥的长度,又看看这一段先:密钥 F O R E S T F O R E S T F O R E S T F O R E S T F O R 明文 b e t t e r t o d o w e l l t h a n t o s a y w e l l 密文 G S K X W K Y C U S O X Q Z K L S G Y C J E Q P J Z C 第一个YC出现后到第二个YC的结尾一共有12个字母(U S O X Q Z K L S G Y C)那么密钥的长度应是12的约数---1,2,3,4,6,12之中的一个(其中,1可排除)。

第三,破译的时候,可以从一下几个方面进行考虑。

1.A-E段,U-Z段以及O-T段的特征比较显著,可先从这些方面着手; 2.如果一些字符串出现的频率较多,不妨猜猜,特别要注意THE,-ING等的出现;3.要留意那些图表中没有出现的字母,很多时候也会是突破点,如X与Z的空缺;4.图表最好还是做一下,毕竟比较直观,好看。

因此,利用单纯的数学统计方法就可以攻破维吉尼亚密码,所以在使用这种密码的过程中,我们尽量增加密钥的长度,只有密钥长度的足够长时,密码的使用才会越安全。

1.3古典密码Playfair1.31古典密码Playfair概述Playfair密码最为著名的多字母加密密码.它将明文中的双字母组合作为一个单元.并将这些单元转换为密文双字母的组合。

Playfair算法基于一个 5x5的字母矩阵.该矩阵通过一个关键词构造。

从左到右、从上到下填入该关键词的字母,并去除重复的字母(两个a只取一个);其次。

按照字母表顺序将其余字母填入矩阵的剩余空问。

字母I和J被算作一个字母,可以根据使用者的意愿在形成密文时确定用I或L1.32 算法原理与设计思路Playfair算法根据下列规则一次对明文的两个字母进行加密。

相关主题