AES加密
AES
属于对称加密算法
三要素:
* 秘钥
* 填充
* 模式
秘钥
对称加密之所以对称,是因为这类算法对明文的加密和解密使用的是同一个秘钥
AES 支持三种长度的秘钥:
* 128位 128的性能最好
* 192位
* 256位 256的安全性最高,加密轮数更多。
这三种不同长度的秘钥,在底层的加密过程中,处理的加密轮数不同。
填充
AES加密分组的特性:AES加密并不是将明文一股脑加密成密文,而是先拆分成一个个的独立的明文块,每个明文快块128bit。
假设一段明文块长度是192bit,按照每128bit一个明文块来拆分的话,第二个明文块只有64bit,不足128bit,此时就需要对不足128bit的明文块进行填充。
填充的 种类:
* NoPadding
不做任何填充,要求明文必须是128bit的整数倍
* PKCS7Padding
用0填充,对于末尾为0的,容易误判,从而解密出错,并不推荐
* ZeroPadding(当明文块少于16个字节,少多少个字节,就用对应数字来填充。例如,少5个,后面就是5个5,少6个,就是6个