Rijndael 解密错误:无效填充
解密使用 Rijndael 算法加密的数据有时会导致“填充无效且无法删除”错误。此错误是由于加密期间使用的填充与解密期间预期的填充之间不一致而引起的。
Rijndael 在 128 位块上运行。 填充确保最后一个块始终是完整的 128 位。 如果解密过程中填充不正确,则过程失败。
理解 Padding 的作用
填充对于数据块对齐和安全性至关重要。 它可以防止某些加密攻击。 PKCS#7 填充通常与 Rijndael 一起使用,在数据末尾添加额外的字节以填充最后一个块。
解决方案:一致的填充
解决这个错误的关键是在加密和解密过程中明确定义填充模式。这确保了一致性。
对于加密,显式设置 PKCS#7 填充:
<code class="language-csharp">key.Padding = PaddingMode.PKCS7;</code>
同样,对于解密,请指定 PKCS#7 填充:
<code class="language-csharp">exml.Padding = PaddingMode.PKCS7;</code>
通过显式定义填充模式,您可以消除填充不匹配并实现成功解密。
以上是为什么 Rijndael 解密失败并提示'填充无效且无法删除”?的详细内容。更多信息请关注PHP中文网其他相关文章!