替代算法和置换移位法。
1.替代算法
替代算法指的是明文的字母由其他字母或数字或符号所代替。最著名的替代算法是恺撒密码。凯撒密码的原理很简单,其实就是单字母替换。我们看一个简单的例子:
明文:abcdefghijklmnopq
密文:defghijklmnopqrst
若明文为student,对应的密文则为vwxghqw 。在这个一一对应的算法中,恺撒密码将字母表用了一种顺序替代的方法来进行加密,此时密钥为3,即每个字母顺序推后3个。由于英文字母为26个,因此恺撒密码仅有26个可能的密钥,非常不安全。
为了加强安全性,人们想出了更进一步的方法:替代时不是有规律的,而是随机生成一个对照表。
明文:abcdefghijklmnopqrstuvwxyz
密文:xnyahpogzqwbtsflrcvmuekjdI
此时,若明文为student,对应的密文则为 vmuahsm 。这种情况下,解密函数是上面这个替代对照表的一个逆置换。
不过,有更好的加密手段,就会有更好的解密手段。而且无论怎样的改变字母表中的字母顺序,密码都有可能被人破解。由于英文单词中各字母出现的频度是不一样的,通过对字母频度的统计就可以很容易的对替换密码进行破译。为了抗击字母频度分析,随后产生了以置换移位法为主要加密手段的加密方法。
2.置换移位法
使用置换移位法的最著名的一种密码称为维吉尼亚密码。它以置换移位为基础的周期替换密码。
前面介绍的替代算法中,针对所有的明文字母,密钥要么是一个唯一的数,要么则是完全无规律可寻的。在维吉尼亚密码中,加密密钥是一个可被任意指定的字符串。加密密钥字符依次逐个作用于明文信息字符。明文信息长度往往会大于密钥字符串长度,而明文的每一个字符都需要有一个对应的密钥字符,因此密钥就需要不断循环,直至明文每一个字符都对应一个密钥字符。对密钥字符,我们规定密钥字母a,b,c,d……y,z对应的数字n为:0,1,2,3……24,25。每个明文字符首先找到对应的密钥字符,然后根据英文字母表按照密钥字符对应的数字n向后顺序推后n个字母,即可得到明文字符对应的密文字符。
如果密钥字为deceptive , 明文为 wearediscoveredsaveyourself,则加密的过程为:
明文: wearediscoveredsaveyourself
密钥: deceptivedeceptivedeceptive
密文: zicvtwqngrzgvtwavzhcqyglmgj
对明文中的第一个字符w,对应的密钥字符为d,它对应需要向后推3个字母,w,x,y,z,因此其对应的密文字符为z。上面的加密过程中,可以清晰的看到,密钥deceptive被重复使用。
古典密码体制将数学的方法引入到密码分析和研究中。这为现代加密技术的形成和发展奠定了坚实的基础。
古典加密算法:置换密码
置换密码算法的原理是不改变明文字符,只将字符在明文中的排列顺序改变,从而实现明文信息的加密。置换密码有时又称为换位密码。
矩阵换位法是实现置换密码的一种常用方法。它将明文中的字母按照给的顺序安排在一个矩阵中,然后用根据密钥提供的顺序重新组合矩阵中字母,从而形成密文。例如,明文为attack
begins
at
five,密钥为cipher,将明文按照每行6列的形式排在矩阵中,形成如下形式:
a
t
t
a
c
k
b
e
g
i
n
s
a
t
f
i
v
e
根据密钥cipher中各字母在字母表中出现的先后顺序,给定一个置换:
1
2
3
4
5
6
f
=
1
4
5
3
2
6
根据上面的置换,将原有矩阵中的字母按照第1列,第4列,第5列,第3列,第2列,第6列的顺序排列,则有下面形式:
a
a
c
t
t
k
b
i
n
g
e
s
a
i
v
f
t
e
从而得到密文:aacttkbingesaivfte