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 的密文

  • 加密步骤详解
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-f1E7M7wl-1605183538154)(http://doc-cjfeii.nos-eastchina1.126.net/aes.jpg)]

3. 分组密码工作模式

概念
  • 初始化向量-IV(Initialization Vector):是许多任务作模式中用于将加密随机化的一个位块,由此即使同样的明文被多次加密也会产生不同的密文,避免了较慢的重新产生密钥的过程
  • 填充-Padding:块密码只能对确定长度的数据块进行处理,而消息的长度通常是可变的。因此部分模式(即ECB和CBC)需要最后一块在加密前进行填充
  • 下面的工作模式使用于多种加密算法,包括:AES、DES、rc2等
3.1 ECB-Electronic codebook
  • 介绍:电子密码本是最简单的加密模式,对数据区块分别独立进行加密
  • 优点:简单,有利于并行计算,不存在误差传递,可以进行随机解密
  • 缺点:不能隐藏明文的模式、可能对明文进行主动攻击

Ecb_encryption
Ecb_decryption

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

Cbc_encryption
Cbc_decryption

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

Cfb_encryption
Cfb_decryption

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

Ofb_encryption
Ofb_decryption

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

Ctr_encryption
Ctr_decryption

4. 功能汇总表

工作模式模式名称并行计算随机解密误差不传递隐藏明文模式其他
ECB电子密码本yesyesyesnoother
CBC密码分组链接nononoyesother
CFB密文反馈nononoyesother
OFB输出反馈nononoyesother
CTR计数器yesyesyesyesother

5. ref

更多推荐