高级加密标准(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不需要填充!