Padding PKCS7 untuk Penyulitan AES
Apabila menggunakan penyulitan AES, adalah perkara biasa untuk menggunakan padding PKCS7 untuk memastikan panjang data yang disulitkan sejajar dengan blok saiz algoritma penyulitan asas. Walau bagaimanapun, menambah dan mengalih keluar padding ini mungkin tidak boleh dikendalikan oleh sambungan Mcrypt, meninggalkannya sebagai tugas manual.
PKCS7 Padding Explained
Seperti yang ditakrifkan dalam RFC 5652, Pelapik PKCS #7 berfungsi dengan menambahkan bait dengan nilai yang sama dengan panjang pelapik. Contohnya, jika kita perlu pad tiga bait, bait yang dilampirkan semuanya akan mempunyai nilai 0x03.
Menambah PKCS7 Padding
Untuk menambah padding secara manual, hitung perbezaan antara panjang data semasa dan saiz blok yang dikehendaki. Nilai ini mewakili bilangan bait padding yang diperlukan. Kemudian, tambahkan banyak bait dengan panjang padding sebagai nilai pada penghujung data.
Contoh Fungsi PHP untuk Menambah Padding
function addPKCS7Padding($data) { $block_size = 16; $pad_length = $block_size - (strlen($data) % $block_size); $padding = str_repeat(chr($pad_length), $pad_length); return $data . $padding; }
Mengalih keluar PKCS7 Padding
Untuk mengalih keluar padding, baca bait terakhir yang dinyahsulitkan data. Nilai ini mewakili panjang padding. Kemudian, hanya alih keluar bilangan bait itu daripada penghujung data.
Contoh Fungsi PHP untuk Mengalih Keluar Padding
function removePKCS7Padding($data) { $pad_length = ord($data[strlen($data) - 1]); return substr($data, 0, -1 * $pad_length); }
Nota Pelaksanaan
Atas ialah kandungan terperinci Bagaimanakah Padding PKCS7 Berfungsi dengan Penyulitan AES, dan Bagaimana Saya Boleh Menambah dan Mengalihkannya dalam PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!