Menaik taraf pustaka penyulitan saya daripada Mcrypt kepada OpenSSL
Bolehkah saya meningkatkan pustaka penyulitan saya daripada Mcrypt kepada OpenSSL? Dalam OpenSSL, adakah mungkin untuk menyahsulit data yang disulitkan dengan Mcrypt? Dua catatan berbeza memberikan maklumat yang bercanggah.
Soalan: Adakah mungkin untuk meningkatkan pustaka penyulitan saya daripada Mcrypt kepada OpenSSL? Jika ya, bagaimana?
Jawapan: Ya, adalah mungkin untuk meningkatkan pustaka penyulitan anda daripada Mcrypt kepada OpenSSL.
Soalan: Bolehkah saya menyahsulit data yang disulitkan dengan menggunakan Mcrypt OpenSSL?
Jawapan: Ya, adalah mungkin untuk menyahsulit data yang disulitkan dengan Mcrypt menggunakan OpenSSL.
Berikut ialah contoh kod cara anda boleh menyahsulit data disulitkan dengan Mcrypt menggunakan OpenSSL:
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; }
Nota Tambahan:
Ujian:
Kod berikut boleh digunakan untuk menguji nyahsulit () fungsi:
$keys = [ 'this is a secret key.', 'G906m70p(IhzA5T&5x7(w0%a631)u)%D6E79cIYJQ!iP2U(xT13q6)tJ6gZ3D2wi&0")7cP5', chr(6) . chr(200) . chr(16) . 'my key ' . chr(3) . chr(4) . chr(192) . chr(254) . ' zyx0987!!', 'and finally one more key to test with here:', ]; $data = [ 'A', 'This is a test', 'now test encrypting something a little bit longer with 1234567890.', '$length = mcrypt_get_block_size(MCRYPT_BLOWFISH, MCRYPT_MODE_CBC); $last = ord($data[strlen($data) - 1]);', 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec sit amet pharetra urna. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Ut fringilla, quam sed eleifend eleifend, justo turpis consectetur tellus, quis tristique eros erat at nibh. Nunc dictum neque vel diam molestie fermentum. Pellentesque dignissim dui quis tortor eleifend, ut maximus elit egestas. Donec posuere odio et auctor porta. Quisque placerat condimentum maximus. Curabitur luctus dolor eget sem luctus, in dignissim tortor venenatis. Mauris eget nulla nisl.', ]; $failures = 0; foreach ($data as $datum) { foreach ($keys as $key) { $enc = new Encryption(MCRYPT_BLOWFISH, MCRYPT_MODE_CBC); $encrypted = $enc->encrypt($datum, $key); $dec = new EncryptionOpenSsl('bf-cbc'); $decrypted = $dec->decrypt($encrypted, $key); if (strcmp($datum, $decrypted) !== 0) { echo "Encryption with key '$key' of '$datum' failed. '$decrypted' != '$datum'<br><br>\n\n"; $failures++; } } } if ($failures) { echo "$failures tests failed.<br>\n"; } else { echo "ALL OKAY<br>\n"; }
Atas ialah kandungan terperinci Bolehkah saya Pindahkan Penyulitan Saya daripada Mcrypt ke OpenSSL, dan Nyahsulit Data Disulitkan Mcrypt Menggunakan OpenSSL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!