目录

1. ECB模式(Electronic Code Book Mode)

2. CBC模式(Cipher Block Chaining Mode)

3. CFB模式(Cipher Feedback Mode)

4. OFB模式(Output Feedback Mode)

5. CTR模式(Counter Mode)

6. PCBC模式(Propagating Cipher Block Chaining Mode)


AES,即Advanced Encryption Standard,高级加密标准,又称Rijndael加密法,是对称加密算法中最流行的一种。AES的区块长度固定为128位,密钥长度则可以是128,192或256位。

AES加密过程是在一个4×4的字节矩阵上运作,这个矩阵又称为“体(state)”,其初值就是一个明文区块(矩阵中一个元素大小就是明文区块中的一个字节)。加密时,各轮AES加密循环(除最后一轮外)均包含4个步骤:AddRoundKey、SubBytes、ShiftRows、MixColumns。波士顿大学的Howard Straubing做了一个动画来展示AES加密算法的演示,非常的直观,相信看完之后就会对AES加密过程有大概的了解了,地址是:http://coolshell.cn/wp-content/uploads/2010/10/rijndael_ingles2004.swf,可以用FLASH播放器或者网页直接打开,如果提示Flash版本过低,可以按提示安装Flash大厅进行播放。

早在1981 年,DES 算法公布之后,NIST 在标准文献 FIPS 81中公布了 4 种工作模式:

  1. 电子密码本:Electronic Code Book Mode (ECB)
  2. 密码分组链接:Cipher Block Chaining Mode (CBC)
  3. 密文反馈:Cipher Feedback Mode (CFB)
  4. 输出反馈:Output Feedback Mode (OFB)

后面又新增了一些工作模式:

  1. 计数器模式:Counter Mode (CTR)
  2. 填充密码分组链接:Propagating Cipher Block Chaining Mode(PCBC)

ECB模式和CBC模式是最常用的两种模式,其他的模式稍作了解即可。

需要块对对齐(填充)的AES加密模式:ECB、CBC、PCBC,其余模式无需块对齐。

需要初始向量的AES加密模式:除ECB模式外,都需要初始向量。

1. ECB模式(Electronic Code Book Mode)

ECB模式是最早采用和最简单的模式,它将加密的数据分成若干组,每组的大小跟加密密钥长度相同,然后每组都用相同的密钥进行加密。

优点:有利于并行计算;误差不会累计(互不干扰)。

缺点:可能对明文进行主动攻击。

aes默认模式 java aes的几种模式_aes默认模式 java

 

aes默认模式 java aes的几种模式_aes默认模式 java_02

2. CBC模式(Cipher Block Chaining Mode)

CBC模式对于每个待加密的密码块,在加密前会先与前一个密码块的密文异或然后再用加密器加密(图中的圆圈十字符号表示异或操作,下同)。第一个明文块与一个叫初始化向量的数据块异或。加、解密双方共同知晓密钥和初始化向量才能实现加解密。

优点:安全性比ECB模式高;是SSL的标准。

缺点:数据块之间的加密有依赖关系,因此不能并行计算。

aes默认模式 java aes的几种模式_AES_03

aes默认模式 java aes的几种模式_AES CBC_04

3. CFB模式(Cipher Feedback Mode)

CFB 模式是用分组算法实现流算法,明文数据不需要按分组大小对齐。

优点:明文数据不需要按分组大小对其,即无需填充。

缺点:同CBC模式,无法并行计算。

aes默认模式 java aes的几种模式_AES加密模式_05

aes默认模式 java aes的几种模式_AES加密模式_06

4. OFB模式(Output Feedback Mode)

OFB 模式的过程和CBC模式有点像,但明文数据不需要按分组大小对齐。

优点:明文数据不需要按分组大小对其,即无需填充。

缺点:同CBC模式,无法并行计算。

aes默认模式 java aes的几种模式_aes默认模式 java_07

aes默认模式 java aes的几种模式_AES CBC_08

5. CTR模式(Counter Mode)

CTR模式是在ECB模式的基础上,引入了Nonce随机数和Counter计数器,Nounce随机数和Counter计数器整体可看作计数器,每加密一段明文,计数器向上加一,并且这个计数器都会和初始IV进行连接、加加、异或等运算,然后使用加密器进行加密,最后在和明文异或得到分段密文。

优点:明文数据不需要按分组大小对其,即无需填充。

缺点:加密方和解密方需要同时维护初始IV、Nonce、Counter。

aes默认模式 java aes的几种模式_AES ECB_09

aes默认模式 java aes的几种模式_AES ECB_10

6. PCBC模式(Propagating Cipher Block Chaining Mode)

PCBC模式是CBC模式的改进版,与CBC模式的不同点在于,CBC模式后段明文加密的所需向量是前一段的密文,而PCBC模式后段明文加密所需的向量是前一段明文和密文的异或值。

优点:同CBC模式。

缺点:同CBC模式。

aes默认模式 java aes的几种模式_AES ECB_11

aes默认模式 java aes的几种模式_aes默认模式 java_12