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 的密文
* 加密步骤详解
AES 加密算法

3. 分组密码工作模式

概念

  • 初始化向量-IV(Initialization Vector):是许多任务作模式中用于将加密随机化的一个位块,由此即使同样的明文被多次加密也会产生不同的密文,避免了较慢的重新产生**的过程
  • 填充-Padding:块密码只能对确定长度的数据块进行处理,而消息的长度通常是可变的。因此部分模式(即ECB和CBC)需要最后一块在加密前进行填充
  • 下面的工作模式使用于多种加密算法,包括:AES、DES、rc2等

3.1 ECB-Electronic codebook

  • 介绍:电子密码本是最简单的加密模式,对数据区块分别独立进行加密
  • 优点:简单,有利于并行计算,不存在误差传递,可以进行随机解密
  • 缺点:不能隐藏明文的模式、可能对明文进行主动攻击

AES 加密算法
AES 加密算法

3.2 CBC-Cipher-block chaining

  • 介绍:密码分组链接模式,每个平文块先与前一个密文块进行异或后,再进行加密
  • 优点:安全性好于ECB,隐藏了明文模式,不容易被攻击
  • 缺点:不利于并行计算,需要初始化向量IV,误差传递

AES 加密算法
AES 加密算法

3.3 CFB-Cipher feedback

  • 介绍:密文反馈模式,类似于CBC,可以将块密码变为自同步的流密码
  • 优点:隐藏了明文模式,分组密码转化为流模式,可以及时加密传送小于分组的数据
  • 缺点:不利于并行计算,唯一的IV,误差传递

AES 加密算法
AES 加密算法

3.4 OFB-Output feedback

  • 介绍:输出反馈模式,产生**流的块,然后将其与平文块进行异或,得到密文
  • 优点:隐藏了明文模式,分组密码转化为流模式,可以及时加密传送小于分组的数据,对一些错误校验码(比如奇偶校验)比较友好
  • 缺点:不利于并行计算,误差传递

AES 加密算法
AES 加密算法

3.5 CTR-Counter mode

  • 介绍:计数器模式,通过递增一个加密计数器以产生连续的**流,进行异或得到密文
  • 优点:隐藏了明文模式,分组密码转化为流模式,可以及时加密传送小于分组的数据,有利于并行计算,不存在误差传递,可以进行随机解密
  • 缺点:计数器可能被预测

AES 加密算法
AES 加密算法

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

5. ref