跳转至

高级加密标准(Advanced Encryption Standard: AES)是美国国家标准与技术研究院(NIST)在2001年建立了电子数据的加密规范。其是对称加解密算法的最经典算法之一,它是一种分组加密标准,每个加密块大小为128位,允许的密钥长度为128、192和256位。

基本概念

秘钥(key)长度:128/192/256bit 初始向量(IV)长度:128bit 分组长度:128bit

加密方式

AES分组密码加密方式主要有7种:ECB,CBC,CFB,OFB和CTR,其中: - 除了ECB,其它加密方式需要初始向量 - CFB、OFB和CTR,不需要padding或者明文必须是128bit的倍数

方式 是否需要IV 是否需要padding 改变一个分组的影响 优缺点
ECB,电子密码本 × 当前分组 相同的明文产生相同的密文
CBC,分组链接模式 当前和后续分组
CFB,密文反馈模式 × 当前和后续分组
OFB,输出反馈模式 × 当前分组
CTR,计数器模式 ×

ECB

填充模式

填充有六种:NoPadding, PKCS#5, PKCS#7, ISO 10126, ANSI X9.23和ZerosPadding

NoPadding

顾名思义,就是不填充。缺点就是只能加密长为128bits倍数的信息,一般不会使用。

注意:OFB和CTR不需要填充!