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中文網其他相關文章!