Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk Membetulkan 'Padding tidak sah dan tidak boleh dialih keluar' Pengecualian dalam Penyahsulitan XML Rijndael?

Bagaimana untuk Membetulkan 'Padding tidak sah dan tidak boleh dialih keluar' Pengecualian dalam Penyahsulitan XML Rijndael?

DDD
DDDasal
2025-01-08 22:26:43749semak imbas

How to Fix

Pengecualian padding tidak sah dalam penyulitan XmlDocument

Apabila menggunakan algoritma Rijndael untuk menyahsulit XmlDocument, anda mungkin menghadapi pengecualian "Padding tidak sah dan tidak boleh dialih keluar". Ini bermakna Standard Penyulitan Data (DES) yang digunakan dalam penyulitan Rijndael tidak serasi dengan padding yang digunakan semasa menyahsulit.

Untuk menyelesaikan isu ini, adalah penting untuk memastikan bahawa kedua-dua operasi penyulitan dan penyahsulitan menggunakan algoritma pelapik yang sama. Masalah timbul kerana Rijndael (aka AES) ialah sifir blok yang beroperasi dalam blok 128-bit tetap.

Data yang disulitkan untuk padding bagi memastikan blok terakhir sentiasa mempunyai dimensi yang betul. Anda boleh menyelesaikan isu ketidakpadanan padding dengan menetapkan secara eksplisit padding untuk penyulitan dan penyahsulitan. Melainkan terdapat keperluan khas untuk kaedah pelapik tertentu, adalah disyorkan untuk menggunakan pelapik standard industri PKCS#7.

Berikut ialah versi kod yang diubah suai di mana padding ditetapkan secara eksplisit:

<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>

Pastikan objek using dilepaskan dengan betul dengan menggunakan pernyataan RijndaelManaged untuk mengelakkan kebocoran sumber. Ambil perhatian bahawa anda perlu menyesuaikan kaedah Encrypt dan Decrypt kepada kod sedia ada anda untuk mengendalikan padding PKCS#7 dengan betul. Ini biasanya melibatkan membuat pengubahsuaian yang sepadan kepada input dan output bagi fungsi penyulitan dan penyahsulitan.

Atas ialah kandungan terperinci Bagaimana untuk Membetulkan 'Padding tidak sah dan tidak boleh dialih keluar' Pengecualian dalam Penyahsulitan XML Rijndael?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn