Mcrypt, sebuah perpustakaan penyulitan warisan, telah menyaksikan persaraannya disebabkan kelemahan keselamatan dan kemunculan OpenSSL sebagai standard industri. Walaupun bertukar daripada Mcrypt kepada OpenSSL mungkin kelihatan menakutkan, ia boleh dipermudahkan dengan memahami perbezaan utama dan menggunakan strategi yang sesuai.
Blowfish, sifir yang anda gunakan, memerlukan padding data untuk penyulitan. OpenSSL menggunakan padding PKCS#7, manakala Mcrypt menggunakan PKCS#5. PKCS#7 memerlukan panjang padding minimum 1, manakala PKCS#5 menerima 0. Perbezaan ini mempengaruhi hasil yang disulitkan yang diperoleh daripada setiap pustaka.
Dalam mod ECB, yang mana anda' menggunakan semula, vektor permulaan (IV) tidak diperlukan. Walau bagaimanapun, ini tidak berlaku dalam mod penyulitan lain. Pastikan anda menetapkan panjang IV kepada 0 apabila menggunakan OpenSSL untuk mod ECB.
Untuk menyahsulit data yang disulitkan dengan Mcrypt menggunakan OpenSSL, padding manual dengan PKCS#7 diperlukan sebelum penyulitan . Ini memastikan keserasian antara kedua-dua perpustakaan.
Kod yang disediakan menunjukkan perbezaan utama dan teknik pelapik yang betul:
$key = "anotherpassword1"; $str = "does it work 12"; // Mcrypt padding $enc = mcrypt_encrypt(MCRYPT_BLOWFISH, $key, $str."", MCRYPT_MODE_ECB); // OpenSSL padding $enc = openssl_encrypt($str, 'bf-ecb', $key, true); // Decrypt using both methods $dec_mcrypt = mcrypt_decrypt(MCRYPT_BLOWFISH, $key, $enc, MCRYPT_MODE_ECB); $dec_openssl = openssl_decrypt($enc, 'bf-ecb', $key, true); echo bin2hex($enc) . PHP_EOL; var_dump($dec_mcrypt); echo PHP_EOL; var_dump($dec_openssl);
Kod ini menunjukkan penyulitan dan penyahsulitan yang berjaya menggunakan kedua-dua Mcrypt dan OpenSSL, menggunakan padding PKCS#7 untuk keserasian.
Atas ialah kandungan terperinci Cara Menukar Penyulitan Mcrypt kepada Penyulitan OpenSSL: Panduan Langkah demi Langkah. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!