AES 加密算法
AES(Advanced Encryption Standard) 加密算法是一种对称加密算法。算法
密钥长度
AES 加密支持的密钥长度:128
, 192
, 256
,长度越长安全性越高,性能越差。安全
分组加密
AES 在对明文进行加密时并非把整个明文一下所有加密成一整段密文,而是把明文拆分红一个个独立的明文块,每一个明文块长度为 128 bit
。这些明文块通过 AES 加密器处理后生成一个个独立的密文块,将全部密文块拼接在一块儿即是最终的 AES 加密结果。性能
填充算法
若是明文总长度不是 128 bit
的整数倍,如上图中明文块 N 的大小小于 128 bit
,则须要对最后长度不足的明文块进行填充。AES 在不一样的语言实现中有不一样的填充算法,几种常见的算法包括:加密
-
PKCS5Padding:默认填充算法,若是明文块少于 16 个字节(128 bit),在明文块末尾补足相应数量的字节,且每一个字节的值等于缺乏的字节数。如:明文
{1,2,3,4,5,6,7,8,9,0}
只占用了 10 个字节,缺乏 6 个字节,则经此算法填充后变为{1,2,3,4,5,6,7,8,9,0,6,6,6,6,6,6}
,填充内容所有为缺乏的字节数量。.net -
ISO10126Padding:若是明文块少于 16 个字节(128 bit),在明文块末尾补足相应数量的字节,最后一个字节的值等于缺乏的字节数,其它字节的值使用随机数填充。如:明文
{1,2,3,4,5,6,7,8,9,0}
,经此算法填充后可能变为{1,2,3,4,5,6,7,8,9,0,r,9,$,v,u,6}
3d -
NoPadding:不作任何填充,可是要求明文必须是 16 个字节(128 bit)的整数倍code
注意:AES 加解密使用的填充算法必须保持一致。blog
工做模式
- ECB:电码本模式,Electronic Codebook Book,默认
- CBC:密码分组连接模式,Cipher Block Chaining
- CTR:计算器模式,Counter
- CFB:密码反馈模式,Cipher FeedBack
- OFB:输出反馈模式,Output FeedBack
注意:AES 加解密使用的工做模式也必须保持一致。ip