当数据与块大小匹配时,RijndaelManaged Padding

时间:2010-05-03 04:52:43

标签: c# .net

如果我在RijndaelManaged中使用带有16字节数据的PKCS7填充,那么我得到32字节的数据输出。看来,对于PKCS7,当数据大小与块大小匹配时,它会添加一整个额外的数据块。

如果我使用零填充16位字节数据,我会得到16字节的数据。因此,对于零填充,如果数据与块大小匹配,则它不会填充。

我搜索了文档,并且没有说明填充行为的这种差异。

有人可以指点我某种文档,它指明当数据大小与块大小匹配时,不同填充模式的填充行为应该是什么。

1 个答案:

答案 0 :(得分:6)

我遇到了this文章,其中提供的解释似乎与我在搜索过程中发现的其他文章相符。这是基本原因:

  

您可能想知道如果我们的数据长度是完美的,会发生什么   块大小的倍数。在这种情况下,PaddingMode.None和   PaddingMode.Zeros不添加填充。但是,在这种情况下   PaddingMode.PKCS7,必须添加填充,因为密码必须是   能够扭转甚至无填充的情况。在这种情况下,一个   必须将附加块添加到纯文本和每个的值   字节设置为块大小,以字节为单位。

相关问题