Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Berhijrah dari Mcrypt ke OpenSSL untuk Penyulitan Data dalam PHP?

Bagaimana untuk Berhijrah dari Mcrypt ke OpenSSL untuk Penyulitan Data dalam PHP?

Susan Sarandon
Susan Sarandonasal
2024-11-15 16:52:03404semak imbas

How to Migrate from Mcrypt to OpenSSL for Data Encryption in PHP?

Melaksanakan OpenSSL di Tempat Mcrypt untuk Penyulitan

Dalam aplikasi PHP yang pada masa ini menggunakan Mcrypt untuk penyulitan data, terdapat keperluan untuk menggantikan Mcrypt dengan OpenSSL. Pelaksanaan asal menggunakan sifir blowfish dalam mod ECB, tetapi menggantikan Mcrypt dengan OpenSSL menimbulkan cabaran kerana hasil penyulitan yang berbeza dan panjang IV yang diperlukan.

Memahami Percanggahan

Kedua-duanya fungsi penyulitan, mcrypt_encrypt dan openssl_encrypt, menghasilkan keputusan yang berbeza. Selain itu, mcrypt memerlukan IV 56-bait untuk blowfish-ecb, manakala openssl menggunakan IV panjang sifar. Perbezaan ini berpunca daripada algoritma pelapik berbeza yang digunakan oleh Mcrypt (PKCS#5) dan OpenSSL (PKCS#7).

Mengatasi Perbezaan Penyulitan

Untuk mengurangkan percanggahan penyulitan , padding manual data dengan padding PKCS#7 diperlukan sebelum menyulitkan dengan mcrypt. Ini memastikan keserasian dengan algoritma padding yang digunakan oleh OpenSSL. Contoh berikut menunjukkan pendekatan ini:

$key = "anotherpassword1";
$str = "does it work 12";

$enc = mcrypt_encrypt(MCRYPT_BLOWFISH, $key, $str."", MCRYPT_MODE_ECB);
$dec = mcrypt_decrypt(MCRYPT_BLOWFISH, $key, $enc, MCRYPT_MODE_ECB);
echo(bin2hex($enc).PHP_EOL); // Encrypted data
var_dump($dec); // Decrypted data

$enc = openssl_encrypt($str, 'bf-ecb', $key, true);
$dec = openssl_decrypt($enc, 'bf-ecb', $key, true);
echo(bin2hex($enc).PHP_EOL); // Encrypted data
var_dump($dec); // Decrypted data

Pertimbangan Penghijrahan

Memandangkan penyahsulitan data yang disulitkan dengan Mcrypt menggunakan OpenSSL adalah tidak praktikal, satu-satunya penyelesaian adalah dengan menyulitkan semula data. Ini menimbulkan usaha migrasi yang ketara, kerana semua data yang disulitkan sebelum ini mesti disulitkan semula menggunakan OpenSSL.

Atas ialah kandungan terperinci Bagaimana untuk Berhijrah dari Mcrypt ke OpenSSL untuk Penyulitan Data dalam PHP?. 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