实验一 古典密码算法
1.1 古典密码仿射密码
1.11算法原理和设计思路
加法密码和乘法密码结合就构成仿射密码,仿射密码的加密和解密算法是: 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,因此仿射密码的密钥空间为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关键算法分析
密码学课程设计
6
密码学课程设计
填充矩阵,将明文输入,然后构成加密矩阵。构成矩阵以后再进行加密运算。
这一部分是解密算法。是加密的逆过程。
1.13运行结果
7
密码学课程设计
1.2 古典密码Hill
1.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)。
?7115?023187?2.选择一个加密矩阵An?n,其中矩阵A必须是可逆矩阵,例如A??11069??1692321??21137225?5??2? ?0?15??3.将明文字母分别依照次序每n个一组(如果最后一组不足n个的话,就将其补成n个),依照字符与数字的对应关系得到明文矩阵minglen/n?n。
4.通过加密矩阵A,利用矩阵乘法得到密文矩阵milen/n?n= minglen/n?n?An?nmod 26; 将密文矩阵的数字与字符对应起来,得到密文。
8
密码学课程设计
5.解密时利用加密矩阵的逆矩阵A和密文,可得到明文。
n6. 设明文为m?(m1?m2,?,mn)?Z26,密文c?(c1,c2,.?,cn)?Z26,密钥为Z26上的
?1nn*n阶可逆方阵K?(kij)n?n,则
加密:密文c?mKmod26解密:明文m?cK1.23 关键算法分析
?1mod26
欧几里德算法又称辗转相除法,用于计算两个整数a,b的最大公约数。
产生公约数的目的是为了下一步求逆矩阵和矩阵时方便运算。
9