2010-05-03 26 views
2

如果我在RijndaelManaged中用16個字節的數據使用PKCS7填充,則獲得32個字節的數據輸出。看起來,對於PKCS7,當數據大小與塊大小相匹配時,它會添加一整塊額外的數據。當數據匹配塊大小時,RijndaelManaged填充

如果我使用零填充16字節的數據,我得到了16字節的數據。因此,如果數據與塊大小匹配,那麼對於零填充,則不填充。

我已經通過文檔搜索,它沒有說明填充行爲的差異。

有人可以請我指出某種文檔,它指定了當數據大小與塊大小相匹配時,不同填充模式的填充行爲應該是什麼。

回答

6

我碰到過this這篇文章,它提供了一個解釋,似乎與我在搜索過程中發現的其他文章混雜在一起。基本原因如下:

您可能想知道如果我們的數據長度是完美的 塊大小的倍數會發生什麼。在這種情況下,PaddingMode.None和 PaddingMode.Zeros不添加填充。但是,在 PaddingMode.PKCS7的情況下,必須添加填充因爲密碼必須是 即使是無填充情況也能夠反轉。在這種情況下,必須將 附加塊添加到明文中,並將每個 字節的值設置爲以字節爲單位的塊大小。