Dengan kemunculan PHP 7.2, sambungan Mcrypt yang disayangi akan ditamatkan secara berperingkat. Sebagai pembangun, adalah penting untuk bersedia untuk perubahan ini dan mempertimbangkan untuk menggunakan alternatif Openssl yang lebih selamat.
Artikel ini memfokuskan pada cabaran biasa yang dihadapi oleh pembangun semasa peralihan: menukar kod daripada Mcrypt kepada Openssl sambil mengekalkan AES 256 CBC dan IV.
Pertimbangkan Mcrypt berikut kod:
function encrypt($masterPassword, $data) { // Mcrypt AES 256 CBC operations $key = mb_substr(hash('SHA256', $masterPassword), 0, $keySize); $encrypted = mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $key, $data, MCRYPT_MODE_CBC, $iv); return base64_encode($iv . $encrypted); } function decrypt($masterPassword, $base64) { // Mcrypt AES 256 CBC operations $key = mb_substr(hash('SHA256', $masterPassword), 0, $keySize); $data = base64_decode($base64); $iv = substr($data, 0, $ivSize); $encrypted = substr($data, $ivSize, strlen($data)); $decrypted = mcrypt_decrypt(MCRYPT_RIJNDAEL_256, $key, $encrypted, MCRYPT_MODE_CBC, $iv); return trim($decrypted); }
Untuk menukar kod ini kepada Openssl, anda harus sedar tentang perbezaan penting: Mcrypt's Rijndael-256 tidak sama dengan AES-256. OpenSSL menyokong AES-256, iaitu Rijndael-128 dengan kunci 256-bit.
Oleh itu, malangnya, penukaran kod langsung tidak boleh dilakukan. Anda perlu menyulitkan semula semua data anda menggunakan operasi AES-256 yang betul.
Tambahan pula, skim penyulitan Mcrypt semasa tidak mempunyai pengesahan, pelapik yang betul dan keselamatan bait. Adalah amat disyorkan untuk menggunakan perpustakaan penyulitan yang lebih mantap seperti defuse/php-encryption untuk keselamatan yang dipertingkatkan.
Dengan memahami perbezaan antara Mcrypt dan Openssl dan menangani kelemahan skim penyulitan sedia ada, anda boleh membuat persediaan dengan berkesan untuk penyingkiran Mcrypt dalam PHP 7.2 dan mengekalkan integriti dan keselamatan data anda yang disulitkan.
Atas ialah kandungan terperinci Bagaimana untuk Menghijrahkan Kod Penyulitan Mcrypt PHP Saya ke OpenSSL dalam PHP 7.2?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!