分组算法加解密是以定长的数据块分组为单位的。AES常用的分组长度是128bit,即16个字节,AES算法也有256bit的分组长度模式,其他不同的分组算法分组长度各不相同。明文数据的长度不会总是恰好等于分组长度的整数倍。为了调用分组算法加密,必须把最后一组明文填充到整个分组的长度,解密时去掉填充的字节即可。一种填充方式是,记明文比一个分组缺少的字节数为N,在明文的后面追加N个值为N的字节即可。如果明文长度恰好是分组长度的整数倍,无需填充,则在明文末尾增加一个分组,每个字节的值都是分组长度L。解密时,按照相同的规则进行去填充,将明文最后一个分组去掉重复的N个N即可,这种填充方式称为PKCS5Padding。编程使用分组加密时,填充方式是需要明确的一个参数。
填充示意图
图片来自http://www.cnblogs.com/happyhippy/archive/2006/12/23/601353.html