首頁 > 後端開發 > C++ > 如何修復 Rijndael XML 解密中的「填充無效且無法刪除」異常?

如何修復 Rijndael XML 解密中的「填充無效且無法刪除」異常?

DDD
發布: 2025-01-08 22:26:43
原創
690 人瀏覽過

How to Fix

XmlDocument 加密中的無效填充異常

使用 Rijndael 演算法解密 XmlDocument 時,可能會遇到異常「Padding is invalid and cannot be removed」。這表示 Rijndael 加密中使用的 資料加密標準 (DES) 與解密時應用的填充不相容。

要解決此問題,請務必確保加密和解密操作都使用相同的填充演算法。問題出現的原因是 Rijndael(又稱 AES)是一種分組密碼,它以固定的 128 位元區塊進行操作。

加密資料進行填充以確保最後一個區塊始終具有正確的尺寸。透過明確設定加密和解密的填充,您可以解決填充不匹配問題。除非對特定填充方法有特殊要求,否則建議使用業界標準 PKCS#7 填充。

以下是修改後的程式碼版本,其中明確設定了填充:

<code class="language-csharp">public void Cryptography(XmlDocument doc, bool cryptographyMode)
{
    using (RijndaelManaged key = new RijndaelManaged())
    {
        key.Padding = PaddingMode.PKCS7;  // 显式设置 AES 128 填充模式

        // ...  您的现有代码(需要进行必要的调整以设置填充)...

        if (cryptographyMode)
        {
            Encrypt(doc, "Content", key);
        }
        else
        {
            Decrypt(doc, key);
        }
    }
    // ...
}</code>
登入後複製

透過使用 using 語句確保 RijndaelManaged 物件被正確釋放,避免資源外洩。 請注意,您需要根據您的現有程式碼調整 EncryptDecrypt 方法以正確處理 PKCS#7 填充。 這通常涉及對加密和解密函數的輸入和輸出進行相應的修改。

以上是如何修復 Rijndael XML 解密中的「填充無效且無法刪除」異常?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板