Rumah >pembangunan bahagian belakang >C++ >Mengapa Saya Mendapat Pengecualian 'Padding Tidak Sah dan Tidak Boleh Dialih Keluar' dalam Penyulitan C# Rijndael Saya?
Pengecualian "Padding tidak sah dan tidak boleh dialih keluar" dalam program penyulitan dan penyahsulitan C# Rijndael
Dalam kriptografi, pengecualian "Padding tidak sah dan tidak boleh dialih keluar" berlaku apabila cuba menyahsulit data yang disulitkan menggunakan algoritma Rijndael. Pengecualian ini menunjukkan bahawa padding yang digunakan semasa penyulitan tidak sepadan dengan apa yang diharapkan oleh algoritma penyahsulitan.
Memahami padding dalam Rijndael
Rijndael (juga dikenali sebagai AES) beroperasi pada blok data bersaiz tetap. Apabila saiz data yang disulitkan tidak boleh dibahagikan dengan saiz blok, padding digunakan untuk mengisi ruang yang tinggal. Pelapik ini memastikan bahawa teks sifir adalah blok yang sah dan lengkap.
Proses penyahsulitan
Semasa penyahsulitan, algoritma cuba mengalih keluar padding daripada teks sifir. Walau bagaimanapun, jika padding tidak sepadan dengan apa yang dijangkakan, pengecualian "Padding tidak sah dan tidak boleh dialih keluar" akan dilemparkan. Ini bermakna algoritma penyulitan dan penyahsulitan menggunakan skema pelapik yang berbeza.
Penyelesaian: Nyatakan pelapik secara eksplisit
Untuk menyelesaikan masalah ini, skema pelapik untuk penyulitan dan penyahsulitan mesti dinyatakan dengan jelas. Ini boleh dilakukan menggunakan kod berikut:
<code class="language-csharp">// 加密 symmetricAlgorithm.Padding = PaddingMode.PKCS7; // 解密 EncryptedXml exml = new EncryptedXml(); exml.Padding = PaddingMode.PKCS7;</code>
Padding PKCS#7
Adalah disyorkan untuk menggunakan padding PKCS#7 melainkan terdapat sebab tertentu untuk menggunakan skema padding yang berbeza. PKCS#7 (juga dikenali sebagai OAEP (Optimal Asymmetric Encryption Padding)) ialah algoritma padding yang disokong secara meluas dan selamat yang memastikan integriti data yang disulitkan.
Nota lain
Atas ialah kandungan terperinci Mengapa Saya Mendapat Pengecualian 'Padding Tidak Sah dan Tidak Boleh Dialih Keluar' dalam Penyulitan C# Rijndael Saya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!