对称加密也称为常规加密、单钥加密,在非对称加密(公钥加密)开发之前是唯一使用的加密类型,直到现在,它也仍然是使用最广泛的加密类型之一。最常见对称加密算法是:DES、3DES、AES、RC4。
对称加密算法基本原理
先上图,对称加密工作过程
在整个工作过程中涉及到以下几个概念
- 明文:也就是原始信息或者说原始数据。也就是上图中的A。
- 加密算法:对明文进行各种替换或转换操作的一种算法。也就是①过程执行的算法。
- 密钥:密钥也是加密算法的输入,加密算法进行替换或转换的具体操作依赖于这个密钥。也就是上图中描述的密钥Key。
- 密文:经过加密算法打乱的消息输出。密文的输出取决于明文与密钥,对于相同的明文,不同的密钥会产生不同的密文。也就是上图中的B。
- 解密算法:本质上来说就是加密算法的逆过程,算法输入的是密文和加密时使用的同一密钥。
对称加密的分类:流加密与分组加密
- 流加密每次加密数据流的一位(bit)或者一个字节(byte)。如RC4。
- 分组加密(通常也成为块加密)是将明文进行分组,加密算法对每个分组分别加密,通常明文分组和加密后得到的密文分组等长。典型的分组大小是64bit或128bit。如DES,3DES,AES。
DES
Data Encryption Standard 数据加密标准,该标准中的数据加密算法(Data Encryption Algorithm),简称DEA,国内对DES和DEA两个术语的使用有点混乱。DES是IBM公司发明的,在1977年应征作为美国国家密码标准方案。随着CPU计算速度的提升,以及硬件成本的下降,1999年美国国家标准技术研究所颁布新标准,规定DES只能用于历史遗留系统以及3DES中。
DES采用64bit分组长度和56bit密钥长度,经过一系列变换得到64bit的密文输出。解密使用相同的密钥对密文进行解密运算。
3DES
密钥大小(bit) | 密钥个数 | 每微秒执行一次解密所需要的时间 | 每微妙执行一百万次解密所需要的时间 |
56 | 256 = 7.2*1016 | 255μs=1142年 | 10.01小时 |
1. 设计一套全新的算法,例如AES,这个在后面会说到。
2. 为了保护已有软硬件的投资,仍使用DES,但使用多个密钥进行多次加密,这就是多重DES加密。
双重加密
双重加密是多重加密最简单的形式,使用两个密钥。使用表达式叙述如下:
C: 代表加密后的密文(crypted)
E: 代表加密算法(encrypt)
D: 代表解密算法(decrypt)
K1,K2: 代表两个密钥(key)
P: 代表明文(proclaimed)
加密过程:
C = E( K2, E( K1, P ) )
解密过程:
P = D( K1,