Padding
PKCS5 沒有填充?
我在 Java 中使用 javax.crypto.Cipher 進行 AES/CBC/PKCS5Padding 加密。我觀察到的是,如果您嘗試加密沒有填充的純文字,PKCS5 會添加另一個完整的塊來填充。例如,如果我得到一個 32 字節的純文字,假設 AES 使用 16 字節的塊大小,則填充大小應該為 0。但是,PKCS5 不是這樣,而是添加了另一個填充塊。
這是正確的還是只是 javax.crypto.Cipher 實現的問題?
這是正確的還是只是 javax.crypto.Cipher 實現的問題?
它是正確的。如果要區分不同的填充長度,則需要始終添加一些填充。使用 PKCS5 填充時,填充的長度為[b−|m|modbMath Processing Error], 在哪裡 $ b - |m| \mod b $ $ b $ 是塊大小。和[|m|Math Processing Error]塊大小的倍數添加了整個填充塊。 $ |m| $