Upgrade meiner Verschlüsselungsbibliothek von Mcrypt auf OpenSSL
Kann ich meine Verschlüsselungsbibliothek von Mcrypt auf OpenSSL aktualisieren? Ist es in OpenSSL möglich, mit Mcrypt verschlüsselte Daten zu entschlüsseln? Zwei verschiedene Beiträge liefern widersprüchliche Informationen.
Frage: Ist es möglich, meine Verschlüsselungsbibliothek von Mcrypt auf OpenSSL zu aktualisieren? Wenn ja, wie?
Antwort: Ja, es ist möglich, Ihre Verschlüsselungsbibliothek von Mcrypt auf OpenSSL zu aktualisieren.
Frage: Kann ich Mit Mcrypt verschlüsselte Daten mit OpenSSL entschlüsseln?
Antwort: Ja, Es ist möglich, mit Mcrypt verschlüsselte Daten mit OpenSSL zu entschlüsseln.
Hier ist ein Codebeispiel, wie Sie mit Mcrypt verschlüsselte Daten mit OpenSSL entschlüsseln können:
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; }
Zusätzliche Hinweise:
Test:
Der folgende Code kann zum Testen verwendet werden decrypt()-Funktion:
$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"; }
Das obige ist der detaillierte Inhalt vonKann ich meine Verschlüsselung von Mcrypt auf OpenSSL migrieren und mit Mcrypt verschlüsselte Daten mit OpenSSL entschlüsseln?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!