古典密码学
密码学(Cryptography)大致可分为古典密码学(Classic cryptography)和现代密码学(Modern cryptography),两者的主要差别在于计算机的使用,一般来说,古典密码学是基于字符的,而现代密码学是基于二进制位的。古典密码学主要包括两类,即代换和置换。
代换
代换密码是将明文中的字符替代成其他字符,即替代转换,若整个加密过程中每个字符采用同一张表替代,则为单表代换密码,类似的,若整个加密过程中每个字符采用不同的表替代,则为多表代换密码,典型的单表代换密码有凯撒密码、培根密码等,多表代换密码有维吉尼亚密码等。
凯撒密码
凯撒密码(Caesar cipher)就是将明文中的所有字母都在字母表上向后(或向前)按照一个固定数目进行偏移后被替换成密文。例如,当偏移量为 3 时,所有的字母 A 将被替换成 D,B 变成 E,以此类推。
明文 Hello World 的加密过程如下:
- 取偏移量为 3
- 计算
H的后 3 位为K - 以此类推
- 密文为:
Khoor Zruog
类似的,解密过程如下:
- 计算
K的前 3 位为H - 以此类推
- 明文为:
Hello World
注意:当偏移量为 13 时,这种凯撒密码的特例又被称为 ROT13(回转 13 位)加密,ROT13 加密是一种对等加密(Reciprocal cipher),对等加密是对称加密的一个特例,即该类密码的加密算法是它自己本身的逆反函数,换言之,要对其解密,只需对其密文再次套用加密算法即可。当偏移量未知时,可采用穷举法一个个试,偏移量必定小于 26。