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
Lepaskan: 2025-01-08 22:21:41
asal
378 orang telah melayarinya

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:

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

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 Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan