对称密码学之传统密码学
对称密码学之传统密码学
1.对称密码学的5个基本成分
-
明文 :原始可理解的消息或数据,是算法的输入;
-
加密算法: 加密算法对明文进行各种代替或置换;
-
**: 也是算法的输入,但独立于明文和加密算法,算法根据所用的特定的的**可产生不同的输出;
-
密文:作为算法的输出,看起来杂乱无章,依赖于明文和**;
-
解密算法:本质上是加密算法的逆运算,输入密文和**,输出明文;
2.传统密码的简化模型
X:明文
E :加密算法
K :**
Y :密文
D :解密算法
3.代替技术
所有加密技术都要用到两个基本模块:代替(替换)和置换。
(1)什么是代替技术
代替技术是将明文字母替换成其他字母、数字或符号的方法。
(2)什么是代替密码,又哪些加密方法是代替密码?
加密方案是采用代替技术而实现的称为代替密码,代替密码包括:Caesar密码(恺撒密码)、单表代替密码、playfair密码(普莱费尔密码)、Hill密码(希尔密码)、多表代替加密、一次一密。
3.1 Caesar密码(恺撒移位)
-
定义:字母表中的每个字母用它之后的第3个字母代替。
-
例子:字母a用其之后的第三个字母d代替,字母b用其之后的第三个字母e代替,依次类推,如下图:
-
算法的公式化表示
(1)加密算法
对于每个明文字母p,替换成密文字母C都有:C = E (3,p)=(p+3)mod26,即 密文 = ( 明文 + 3 )mod26
(2)一般加密算法
移位k可以是任意整数, k ∈ [1,25] : C = E (k,p)=(p+k)mod26,即 密文 = ( 明文 + 移位数k )mod26
3.2 playfair密码
-
定义 :该算法基于一个由**词构成的5×5字母矩阵。
-
字母矩阵的生成规则:首先将**词(去掉重复字母)从左至右、从上至下填在矩阵格子里,再将剩余的字母按字母表的顺序从左到右、从上至下填在矩阵剩下的格子李。字母I和J暂且当成一个字母。
-
加密规则 :
a. 如果该字母对的两个字母是相同的,那么在它们之间加一个填充字母,比如x。例如: Hello先把它变成he lx lo这样3个字母对。
b. 落在矩阵同一行的明文字母对中的字母由其右边的字母代替,每行中最右边的一个字母就用该列中最左边的第一个字母来代替,比如ar变成RM。
c. 落在矩阵同一列的明文字母对中的字母由其下面的字母代替,每行中最下面的一个字母就用该列中最上面的第一个字母来代替,例如mu变成CM。
d. 其他的每组明文字母对文中的字母则:该字母所在行为密文所在行,另一字母所在列为密文所在列。比如hs变成BP,ea变成IM。
-
举例说明:
取” monarchy ”为**,得5*5的矩阵如下图所示:
要加密的消息是:Hello world进行两两分组 : HE LX LO WO RL DX
根据加密规则得到密文:FC SU PM ON TM BZ
3.3 Hill密码(希尔密码)
-
hill密码是通过矩阵理论对传输信息进行加密处理的。
-
算法的基本思想(先用一个例子来表示)
首先设定26个英文字母与数字的对应关系如下图,0表示空格:
要发送的信息是:I Love You对照上述字母与数字的关系可得到要发送的信息的编码为:9 , 0 , 12 , 15 , 22 , 5 , 0 , 25 , 15 , 21
假设将信息中从左到右, 每3 个字符分为一组,并将对应的3 个整数排成3 维的列向量,加密后仍为 3 维的列向量,最后不足3 个字符时用空格补上,可得到4个列向量:p1 = (9,0,12)T , p2 = (15,22,5)T , p3 = (9,25,15)T , p4 = (21,0,0)T ,将这4个列向量写成一个矩阵P,可得到矩阵如下P
第一步:加密任取一个3阶可逆矩阵K
是将要发出的信息( 或矩阵P) 经乘以K变成“密 码”后发出,即KP = C,矩阵C为
得到矩阵C后即可得到加密过后的消息是:udllewmnmup,注意矩阵C中有大于26的数字,可用mod26的方式得到加密消息第二步:解密
解密是加密的逆运算,用到可逆矩阵K的逆矩阵K-1 ,K-1为:
K-1C = P :
解密之后的明文是:I Love you -
hill密码的公式化表示方法一
由上述例子可总结出hill密码的一般性,将m个连续的明文替换成m个密文字母,这是由m个线性等式决定的,例如m = 3
c1 = k11p1 + k12p2 + k13p3
c2 = k21p1 + k22p2 + k23p3
c3 = k31p1 + k32p2 + k33p3
密文 = ** * 明文
明文 = **的逆* 密文一般加密算法:
C = E(K,P) = KP mod 26
P = D(K,C) = K-1C = K-1KP mod26 = P -
hill密码的公式化表示方法二
将m个连续的明文替换成m个密文字母,这是由m个线性等式决定的,例如m = 3
c1 = k11p1 + k21p2 + k31p3
c2 = k12p1 + k22p2 + k32p3
c3 = k13p1 + k23p1 + k33p1
密文 = 明文 * **
明文 = 密文 * **的逆
一般加密算法:
C = E(K,P) = PK mod 26
P = D(K,C) = CK-1 = PKK-1 mod26 = P
-
注意
(1)在hill加密算法中,可逆矩阵K不是唯一的,可任选去一个可逆矩阵;
(2)明文的编码矩阵也是不唯一的,可以是3列,可以是4列;
4.置换技术
- 定义:置换是指改变明文字符的排列方式。
- 例子:
5.思考
-
希尔密码中字母与数字的对应关系是确定的吗?
-
补位字符可以是任意字符吗?
-
上述2中方式可以颠倒吗?(逆矩阵是1*1矩阵)
-
playfair密码中I/J为什么放在一起?