AES四种加密模式的区别:
ECB(Electronic Code Book电子密码本)模式
ECB模式是最早采用和最简单的模式,它将加密的数据分成若干组,每组的大小跟加密密钥长度相同,然后每组都用相同的密钥进行加密。
优点: 1.简单; 2.有利于并行计算; 3.误差不会被扩散;
缺点: 1.不能隐藏明文的模式; 2.可能对明文进行主动攻击;因此,此模式适于加密小消息。
CBC(Cipher Block Chaining,加密块链)模式
优点: 不容易主动攻击,安全性好于ECB,适合传输长度长的报文,是SSL、IPSec的标准。
缺点: 1.不利于并行计算; 2.误差传递; 3.需要初始化向量IV
CFB(Cipher FeedBack Mode,加密反馈)模式
优点: 1.隐藏了明文模式; 2.分组密码转化为流模式; 3.可以及时加密传送小于分组的数据;
缺点: 1.不利于并行计算; 2.误差传送:一个明文单元损坏影响多个单元; 3.唯一的IV;
OFB(Output FeedBack,输出反馈)模式
优点: 1.隐藏了明文模式; 2.分组密码转化为流模式; 3.可以及时加密传送小于分组的数据;
缺点: 1.不利于并行计算; 2.对明文的主动攻击是可能的; 3.误差传送:一个明文单元损坏影响多个单元;
2. AES算法
AES使用采用CBC算法模式,PKCS5/PKCS7填充模式,向量和密钥相同。
明文 hello,world!
密钥 chinashanghaijky
密文
byte(-128~127) 35,118,54,20,-110,33,-7,92,121,-103,21,52,-119,96,-120,-30
byte(0~256) 35,118,54,20,146,33,149,92,121,153,21,52,137,96,126,226
十六进制 237636149221f95c79991534896088e2
备注:对于byte类型,由于不同言语对应的值范围不同,如C、C++、java是-128~127,C#是0~256,因此对应范围不同的值在不同语言中显示值会有不同,但对结果没有影响。
采用“在线AES加解密”对上述加密过程进行验证,验证结果如下图所示: