密码学
- 密码使用学
- 密码分析学
密码使用学
- 无密钥算法
- 对称密钥算法
- 公开密钥算法
对称密钥算法
- 双方共享一个密钥,并使用相同的加密和解密算法。
- 相关术语:
- 明文:被传递的消息。用 M 表示。对于计算机,M 指的是 2 进制。
- 密文:加密后的消息。用 C 表示,对于计算机,C 指的是 2 进制。
- 加密函数:作用于明文 M,得到密文 C,用 E 表示。
- 数学公式:𝐶=𝐸(𝑀)
- 解密函数:作用于密文 C,还原明文 M,用 D 表示。
- 数学公式:𝑀=𝐷(𝐶)
- 数学公式:𝑀=𝐷(𝐶)
公开密钥算法
- 使用不同的加密密钥和解密密钥,是一种“由已知加密密钥推导出解密密钥在计算上是不可行的”密码体制。
- 解密密钥是接收者专用的,对其他人保密。
密码分析学
古典密码学
常见替换密码
单表替换加密法:明文中的同一字母在加密时被同一固定的字母代换。
- 凯撒密码
- 简单替换密码
- 仿射密码
- Polybius密码
多表替换加密法:明文中的同一字母在加密时不是完全被同一固定的字母代换,可能是多个。
- 维吉尼亚密码
- ADFGVX密码
- Enigma密码机
单表置换密码
凯撒密码
算法:明文中的所有字母都在字母表上向后(或向前)按照一个固定数目
进行偏移后被替换成密文。
破解:穷举。
简单替换密码
算法:将明文中所使用的字母替换为另一套字母表,形成新的对应关系。这种替换可以是任意的一对一关系。
破解:穷举复杂度数量级是阶乘,因此很难用穷举破译。
仿射密码
加密函数: C = ( a M + b ) m o d 26 C=(aM+b) mod\space 26 C=(aM+b)mod 26,其中
- 数字对(a,b)为密钥
- a和26互素,既: g c d ( a , 26 ) = 1 gcd(a,26)=1 gcd(a,26)=1
- b为小于26的正整数
- 在英文中有26个字母,因此是 m o d 26 mod\space 26 mod 26
解密函数: M = a − 1 ( C − b ) m o d 26 M=a^{−1} (C−b)mod\space 26 M=a−1(C−b)mod 26