密码学几乎专指加密(encryption)算法,将普通信息(明文,plaintext)转化成难以理解的资料(密文,ciphertext)的过程。;解密(decryption)算法则是反过程:密文转换会明文。
1.1.1 密钥加/解密系统模型
所谓的密码学就是指对称密钥密码系统。因为加/解密用的是同一把密钥,所以还有另一个称呼,单一密钥密码系统。
一般一个密钥包含下面几个部分
- 消息空间 M(Message)
- 密文空间 C(Ciphertext)
- 密钥空间 K(Key)
- 加密算法 E(Encryption Algorithm)
- 解密算法 D(Decryption Algorithm)
它们之间通常是下面的关系:
EK1(M) = C
Dk2(C) = M
DK2(EK1(M)) = M
消息空间中的消息M(明文)通过加密的密钥K1控制的加密算法加密后得到密文C。
密文C通过解密密钥K2控制的解密算法恢复会原来的明文M。
1.1.2 古典密码
在以前,没有计算机,计算能力低下。当时密码学都是一些基于字符的密码算法。密码算法基本是互相替换(Substitution)或者相互置换(Transposition)。一些好一点的密码算法,就会接合两者,进行多次运算。
1. 替代密码
替代密码就是明文中的每一个字符被换为密文中的另一个字符。接受者对密文进行逆向替代,就可以恢复出原来的明文了。在古典密码学中,有三类替代密码:
- 单表替代密码
- 多表替代密码
- 多字母替代密码