Keserasian Mcrypt dengan OpenSSL adalah perkara yang perlu diperdebatkan. Sesetengah sumber mendakwa bahawa OpenSSL tidak boleh menyahsulit data yang disulitkan menggunakan Mcrypt, manakala yang lain mencadangkan ia boleh dilakukan dengan penggunaan padding.
[Post 1](https://stackoverflow.com/a/19748494/ 5834657) menyatakan bahawa penyahsulitan adalah mustahil, manakala [Siaran 2](https://stackoverflow.com/a/31614770/5834657) mencadangkan bahawa ia boleh dicapai dengan pelapik yang betul. Walau bagaimanapun, pelapik contoh yang disediakan dalam siaran ditujukan khusus untuk Mcrypt dan mungkin tidak boleh digunakan untuk OpenSSL.
Untuk menguji keserasian, kami mengubah suai kod Mcrypt sedia ada kepada gunakan OpenSSL. Fungsi penyahsulitan yang diubah suai berbunyi seperti berikut:
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); $data = $this->unpad($dec); return $data; }
Kami menguji kod yang diubah suai ini dengan menyulitkan rentetan dengan perpustakaan Mcrypt dan kemudian cuba menyahsulitnya menggunakan kod berasaskan OpenSSL kami. Bagaimanapun, kami hanya menerima jawapan kosong. Ralat nampaknya berpunca daripada baris $data = $this->unpad($dec). Apabila kami mengulas baris ini, kami mendapat rentetan bercampur aduk yang menyerupai format asal yang disulitkan.
Malangnya, percubaan kami untuk menyahsulit data yang disulitkan Mcrypt menggunakan OpenSSL tidak berjaya. Ada kemungkinan bahawa padding khusus yang digunakan oleh Mcrypt tidak serasi dengan OpenSSL atau mungkin terdapat ketidakserasian asas lain yang menghalang penyahsulitan yang berjaya.
Penyiasatan lanjut diperlukan untuk menentukan sama ada benar-benar mustahil untuk menyahsulit yang disulitkan Mcrypt data dengan OpenSSL, atau jika terdapat penyelesaian yang masih belum ditemui.
Atas ialah kandungan terperinci Bolehkah OpenSSL Menyahsulit Data Disulitkan dengan Mcrypt?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!