1.相同點:
pkcs#5填充和pkcs#7填充算法沒有任何區別。
他們的填充字符串由一個字節序列組成,每個字節填充該填充字節序列的長度。
假定塊長度為 8,數據長度為 9,
數據: FF FF FF FF FF FF FF FF FF
PKCS7 填充: FF FF FF FF FF FF FF FF FF 07 07 07 07 07 07 07
簡單地說, PKCS5, PKCS7和SSL3, 以及CMS(Cryptographic Message Syntax)
有如下相同的特點:
1)填充的字節都是一個相同的字節
2)該字節的值,就是要填充的字節的個數
如果要填充8個字節,那么填充的字節的值就是0×8;
要填充7個字節,那么填入的值就是0×7;
…
如果只填充1個字節,那么填入的值就是0×1;
恰好8個字節時還要補8個字節的0×08
正是這種即使恰好是8個字節也需要再補充字節的規定,可以讓解密的數據很確定無誤的移除多余的字節。
2.不同點:
在PKCS5Padding中,明確定義Block的大小是8位,而在PKCS7Padding定義中,對於塊的大小是不確定的,可以在1-255之間(塊長度超出255的尚待研究)。