encrypt
AES加密AES支持三种长度的密钥:128位、192位、256位,分别称之为AES128、AES192和AES256。
AES加密会把明文拆成一个一个的明文块,每个明文块128bit,如果最后一块长度不足128位,则默认使用缺失的字节数填充。接着对这些明文块分别加密,将加密结果拼接形成最终加密结果。
在加解密过程,每个明文块会作为4*4字节的矩阵进行处理
加密过程包括如下四步
AddRoundKey(轮密钥加)
矩阵中的每个字节都与该次轮密钥(round key)做异或运算
SubBytes(字节替代)
通过非线性的替换函数,用查找表的方式把每个字节替换成对应的字节
ShiftRows(行移位)
将矩阵中的每个横列进行循环式移位
MixColumns(列混淆)
为了充分混合矩阵中各个直行的操作,使用线性转换来混合每列的四个字节。
填充方式
不填充 NoPadding
不进行填充,要求明文必须位16个字节的整数倍。
长度填充 PKCS5Padding(默认)
填充的数据为16-最后一块字节数:相差长度
若明文为16个字节的整数倍,则填充16个字节的数据,其值都为16(16- ...