古典密码
1949年香农发表《保密系统的通信原理》,将古典密码推向现代密码。古典密码主要是代换密码(substitution)和置换(permutation)密码。
一、置换密码
仅改变明文中元素的位置,但元素本身的值并不会改变。
1、列置换
将明文按二维数组排列,根据密钥进行列置换。
2、周期置换
将明文按密钥长度为周期进行分组,对每组中元素逐一置换。
二、代换密码
改变元素的值,根据映射关系分为单表和多表。
1、单表代换密码 (明文密文双射)
a.基于密钥的单表代换密码
两字母表一一对应。
e.g. 取一单词为密钥,取其无重复序列,对应字母表中前几位,其余字母依次填写剩余字母表。
b.仿射密码
线性变换,y = a * x + b (mod 26), gcd(a,26) = 1。 当a=1,b=3时,即为凯撒密码。
2、多表代换密码 (明文中不同位置的相同字符会代换成不同字符)
a. Playfair密码
先构造一个5*5的字母矩阵,将明文两两一组进行代换,根据组合不同从矩阵得到的代换也各不相同。
b. Vigenere密码
密钥为一串字符,将明文按密钥长度分组,对每组与密钥进行数字求和取模运算,因此尽管明文中字符相同,但其字符若对应密钥中不同位置,得到的密文也不同。
c. Hill密码
同样进行数字取模运算,将明文分组,与n*n矩阵运算。
单表代换后,明文与密文各个字符的出现频率相同,而多表则不同。