AES 加密算法
AES 加密算法
1. 简单介绍
- 高级加密标准(英语:Advanced Encryption Standard,缩写:AES)
- 该算法为比利时密码学家Joan Daemen和Vincent Rijmen所设计,所以在密码学中又称 Rijndael 加密法
- 这个标准用来替代原先的 DES,已经被多方分析且广为全世界所使用
- 经过五年的甄选流程,高级加密标准由美国国家标准与技术研究院(NIST)于2001年11月26日发布于 FIPS PUB 197,并在2002年5月26日成为有效的标准
- 2006年,高级加密标准已然成为对称**加密中最流行的算法之一
2. 算法实现
2.1 实现说明
- AES的区块长度固定为128比特
- **长度则可以是128,192或256比特
2.2 实现步骤
AES加密过程是在一个 4*4
的字节矩阵上运作,经过很多轮可逆的变换得到一个 4*4
的密文
* 加密步骤详解
3. 分组密码工作模式
概念
- 初始化向量-IV(Initialization Vector):是许多任务作模式中用于将加密随机化的一个位块,由此即使同样的明文被多次加密也会产生不同的密文,避免了较慢的重新产生**的过程
- 填充-Padding:块密码只能对确定长度的数据块进行处理,而消息的长度通常是可变的。因此部分模式(即ECB和CBC)需要最后一块在加密前进行填充
- 下面的工作模式使用于多种加密算法,包括:AES、DES、rc2等
3.1 ECB-Electronic codebook
- 介绍:电子密码本是最简单的加密模式,对数据区块分别独立进行加密
- 优点:简单,有利于并行计算,不存在误差传递,可以进行随机解密
- 缺点:不能隐藏明文的模式、可能对明文进行主动攻击
3.2 CBC-Cipher-block chaining
- 介绍:密码分组链接模式,每个平文块先与前一个密文块进行异或后,再进行加密
- 优点:安全性好于ECB,隐藏了明文模式,不容易被攻击
- 缺点:不利于并行计算,需要初始化向量IV,误差传递
3.3 CFB-Cipher feedback
- 介绍:密文反馈模式,类似于CBC,可以将块密码变为自同步的流密码
- 优点:隐藏了明文模式,分组密码转化为流模式,可以及时加密传送小于分组的数据
- 缺点:不利于并行计算,唯一的IV,误差传递
3.4 OFB-Output feedback
- 介绍:输出反馈模式,产生**流的块,然后将其与平文块进行异或,得到密文
- 优点:隐藏了明文模式,分组密码转化为流模式,可以及时加密传送小于分组的数据,对一些错误校验码(比如奇偶校验)比较友好
- 缺点:不利于并行计算,误差传递
3.5 CTR-Counter mode
- 介绍:计数器模式,通过递增一个加密计数器以产生连续的**流,进行异或得到密文
- 优点:隐藏了明文模式,分组密码转化为流模式,可以及时加密传送小于分组的数据,有利于并行计算,不存在误差传递,可以进行随机解密
- 缺点:计数器可能被预测
4. 功能汇总表
工作模式 | 模式名称 | 并行计算 | 随机解密 | 误差不传递 | 隐藏明文模式 | 其他 |
---|---|---|---|---|---|---|
ECB | 电子密码本 | yes | yes | yes | no | other |
CBC | 密码分组链接 | no | no | no | yes | other |
CFB | 密文反馈 | no | no | no | yes | other |
OFB | 输出反馈 | no | no | no | yes | other |
CTR | 计数器 | yes | yes | yes | yes | other |