Rumah >pembangunan bahagian belakang >C++ >Mengapa Saya Mendapat Pengecualian 'Padding Tidak Sah dan Tidak Boleh Dialih Keluar' dalam Penyulitan C# Rijndael Saya?

Mengapa Saya Mendapat Pengecualian 'Padding Tidak Sah dan Tidak Boleh Dialih Keluar' dalam Penyulitan C# Rijndael Saya?

Linda Hamilton
Linda Hamiltonasal
2025-01-08 22:18:57753semak imbas

Why Am I Getting a

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

  • Semak sama ada saiz kunci yang digunakan untuk penyulitan dan penyahsulitan adalah sama.
  • Pastikan vektor permulaan (IV) dikendalikan dengan betul.
  • Gunakan pustaka atau rangka kerja yang menyokong penyulitan Rijndael dengan padding PKCS#7 untuk memudahkan pelaksanaan.

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!

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