首先说一下,在AES加密与解密的过程中如果需要加密的数据不是16的倍数的时候,需要对原来的数据做padding操作。
padding分为以下几种,不同的padding对加密与解密有影响,所以要保证padding的方式是一致的。
1、ANSI X.923
在ANSI X.923的方式下,先是填充00,最后一个字节填充padded的字节个数。
例子: | DD DD DD DD DD DD DD DD | DD DD DD 00 00 00 00 05 |
2、ISO 10126
在ISO 10126的方式下,先是填充随机值,最后一个字节填充padded的字节个数。
例子: | DD DD DD DD DD DD DD DD | DD DD DD 95 81 28 A7 05 |
3、PKCS7
在PKCS7的方式下,如果一共需要padded多少个字节,所有填充的地方都填充这个值。
例子: | DD DD DD DD DD DD DD DD | DD DD DD 05 05 05 05 05 |
4、ISO/IEC 7816-4
在ISO/IEC 7816-4方式下,第一个填充的字节是80,后面的都填充00。
例子: | DD DD DD DD DD DD DD DD | DD DD DD 80 00 00 00 00 |
5、Zero padding
在Zero padding方式下,每一个需要填充的字节都填00。
例子: | DD DD DD DD DD DD DD DD | DD DD DD 00 00 00 00 00 |