为什么 MSDN 文章中的示例需要 16 的数据长度倍数

本文关键字:数据 文章 MSDN 为什么 | 更新日期: 2023-09-27 18:36:08

我正在尝试使用 MSDN 站点上的示例:https://msdn.microsoft.com/en-us/library/ms229741(v=vs.110).aspx。

我不明白的一件事是数据长度应该是 16 的倍数"创建要加密的原始数据(数据长度应为 16 的倍数)"我的数据只有 8 个字节长,有什么解决方法,在我的数据后附加 8 个空格?

谢谢!

为什么 MSDN 文章中的示例需要 16 的数据长度倍数

这是因为编码算法适用于数据块,而不是单个字节。在这种情况下,块大小 = 16。您只需向数据添加填充字节即可获得适当的大小。

一般的解决方案是填充,使输入数据成为块大小的倍数,并在解密后重新填充。这通常可以通过加密功能的填充选项来完成,但这=似乎不是ProtectedMemory.Protect的情况。最常见的填充是 PKCS#7,请参阅填充(加密)。

如果您在解密之前知道加密数据的长度,则可以填充任何东西,但如果您可能不知道解密前加密数据的长度,则ypou需要一个填充,它将提供有关填充长度的信息。