Rumah >pembangunan bahagian belakang >C++ >Mengapa Penyahsulitan Rijndael Gagal dengan 'Padding Tidak Sah' dan Bagaimana Ia Boleh Dibetulkan?

Mengapa Penyahsulitan Rijndael Gagal dengan 'Padding Tidak Sah' dan Bagaimana Ia Boleh Dibetulkan?

Mary-Kate Olsen
Mary-Kate Olsenasal
2025-01-08 22:21:41290semak imbas

Why Does Rijndael Decryption Fail with

Pelapik tidak sah dalam kriptografi

Soalan:

Apabila menggunakan Rijndael untuk menyahsulit dokumen XML yang disulitkan, saya menghadapi pengecualian: "Padding tidak sah dan tidak boleh dialih keluar".

Jawapan:

Rijndael (juga dikenali sebagai AES) ialah sifir blok yang menyulitkan data dalam blok 16 aksara. Padding digunakan untuk memastikan bahawa bahagian terakhir mesej sentiasa saiz yang sesuai.

Padding lalai untuk Rijndael dalam .NET ialah padding PKCS#7. Walau bagaimanapun, kod yang diberikan dalam soalan tidak menyatakan secara eksplisit mod pelapik, mengakibatkan percanggahan antara operasi penyulitan dan penyahsulitan.

Untuk menyelesaikan isu ini, mod pelapik untuk penyulitan dan penyahsulitan perlu ditetapkan secara eksplisit. Khususnya, sifat Padding bagi objek RijndaelManaged harus ditetapkan kepada PaddingMode.PKCS7.

Berikut ialah coretan kod yang diubah suai yang termasuk pelapik tetapan secara eksplisit:

<code class="language-csharp">public void Cryptography(XmlDocument doc, bool cryptographyMode)
{
    RijndaelManaged key = null;
    try
    {
        // 创建一个新的Rijndael密钥。
        key = new RijndaelManaged()
        {
            Padding = PaddingMode.PKCS7 //显式设置PKCS7填充模式
        };
        // ... 代码其余部分保持不变 ...
    }
    catch (Exception ex)
    {
        // ... 异常处理保持不变 ...
    }
    finally
    {
        // ... 密钥清理保持不变 ...
    }
}</code>

Dengan menetapkan mod pelapik secara eksplisit, anda boleh memastikan bahawa proses penyulitan dan penyahsulitan menggunakan mekanisme pelapik yang sama, dengan itu menyelesaikan pengecualian berkaitan pelapik. Ini mengelakkan kegagalan penyahsulitan kerana corak pelapik yang tidak konsisten.

Atas ialah kandungan terperinci Mengapa Penyahsulitan Rijndael Gagal dengan 'Padding Tidak Sah' dan Bagaimana Ia Boleh Dibetulkan?. 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