Menaik taraf pustaka penyulitan saya daripada Mcrypt kepada OpenSSL
Soalan:
Adakah mungkin untuk tingkatkan pustaka penyulitan saya daripada Mcrypt kepada OpenSSL dan mengekalkan keupayaan untuk menyahsulit data yang disulitkan menggunakan Mcrypt?
Maklumat Bercanggah:
Nampaknya terdapat maklumat yang bercanggah dalam talian mengenai keserasian antara kedua-dua perpustakaan ini.
Konteks Tambahan:
Saya cuba menukar kelas penyulitan yang sedang menggunakan Mcrypt kepada kelas yang menggunakan OpenSSL. Walau bagaimanapun, saya menghadapi kesukaran dalam menyahsulit data yang disulitkan dengan versi Mcrypt.
Kod Kerja untuk Penyahsulitan:
Kod yang disemak berikut untuk rutin penyahsulitan dalam versi OpenSSL telah disahkan berfungsi:
public function decrypt($data, $key) { $salt = substr($data, 0, 128); $enc = substr($data, 128, -64); $mac = substr($data, -64); list ($cipherKey, $macKey, $iv) = $this->getKeys($salt, $key); if ($mac !== hash_hmac('sha512', $enc, $macKey, true)) { return false; } $dec = openssl_decrypt($enc, $this->cipher, $cipherKey, OPENSSL_RAW_DATA, $iv); return $dec; }
Ujian Keputusan:
Menguji kod yang disemak ini dengan pelbagai data dan kunci tidak menghasilkan kegagalan.
Kesimpulan:
Adalah mungkin untuk meningkatkan pustaka penyulitan daripada Mcrypt ke OpenSSL dan berjaya menyahsulit data yang disulitkan dengan pustaka sebelumnya, dengan syarat anda menggunakan penyahsulitan yang dikemas kini rutin.
Atas ialah kandungan terperinci Bolehkah saya Berhijrah dari Mcrypt ke Penyulitan OpenSSL Sambil Mengekalkan Keserasian Penyahsulitan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!