古典密码-单表密码体制
如果明文中不同的位置的同一明文字母在密文中对应的密文字母相同,则称其为单表密码体制。
代表性的单表密码:
1.移位或加法密码
2.乘数或乘法密码
3.仿射密码
4.密钥短语密码
下面分别举一个例子:
1.加法密码算法:
P=C=K=Zm (Zm∈{0,1,...,m-1})
Ek(x)=x+k(mod m)=y∈C
Dk(y)=y-k(mod m)=x∈P
当k=3时,该密码算法就是凯撒密码。
E3(1)=1+3(mod 26)=4 1代表A,4代表D,所以就把明文A加密成D
D3(4)=4-3(mod 26)=1 所以把密文D,解密成明文A
这种算法容易受到唯密文攻击,由算法可知,密钥的可能性个数为m,如果是英语字母表,只有26个字母,那么只要尝试25种(不包括0,因为m=0就等于是明文了)密钥,就能破解该算法。
2.乘法密码算法
P=C=Zm
K={a ∈Zm | (a, m)=1}
Ea(x)=ax (mod m) =y ∈C
Da (y)=a-1y (mod m) =x ∈P
(a-1是a对于m的乘法逆元)
当m=26,
P=C=Z26,
K={a ∈Z26 | (a, 26)=1},
Ea(x)=ax (mod 26) =y ∈C
Da (y)=a-1y (mod 26) =x ∈P
(a-1是a对于26的乘法逆元)
当a=9时,
逆元a-1=3
E9(x)=9x (mod 26)=y ∈C
D9(y)=3y (mod 26)=x ∈P
加密过程:字符B,对应的X=1 y=E9(x)=9*1 (mod 26)=9 替换为字符J
解密过程:字符J,对应y=9 x=D9(x)=9*3 (mod 26)=1 还原为字符B
对于乘数密码,当且仅当a与26互素时,加密变换才是一对一映射的。
因此a的选择只有11种:3,5,7,9,11,15,17,19,21,23,25,可能的密钥只有11种!
3.仿射密码算法:
P=C=Zm
K={(a,b)∈Zm×Zm|(a,m)=1}
E(a,b) (x)=ax + b (mod m)
D(a,b) (y)=a-1(y-b)(mod m)
当a=1时,变为加法密码
当b=0时,变为乘法密码
所以,加法密码和乘法密码是仿射密码的特例。
设(a,b)=(7,3)
7-1=15
若加密明文:hot,首先转换字母h,o,t成为数字7,14,19
4.密钥短语密码算法:
一种以单词为密钥的换字表
取ATMOSPHERE为密钥
去掉重复的字母E
得ATMOSPHER
放在字母表的某个位置
KLNQUVWXYZATMOSPHERBCDFGIJ
ABCDEFGHIJKLMNOPQRSTUVWXYZ原来字母表
如果明文为APPLE,那么密文为KQQBS
如果明文字母与代替的密文字母毫无关联,那么整个换字表就是密钥,这时密钥空间为26!,用穷举法来破译几乎是不可能的。