Heim > Backend-Entwicklung > PHP-Tutorial > Kann ich meine Verschlüsselung von Mcrypt auf OpenSSL migrieren und mit Mcrypt verschlüsselte Daten mit OpenSSL entschlüsseln?

Kann ich meine Verschlüsselung von Mcrypt auf OpenSSL migrieren und mit Mcrypt verschlüsselte Daten mit OpenSSL entschlüsseln?

Barbara Streisand
Freigeben: 2024-12-05 07:16:11
Original
863 Leute haben es durchsucht

Can I Migrate My Encryption from Mcrypt to OpenSSL, and Decrypt Mcrypt-Encrypted Data Using OpenSSL?

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;
}
Nach dem Login kopieren

Zusätzliche Hinweise:

  • Die Funktion openssl_decrypt() erfordert die Der iv-Parameter muss die gleiche Länge wie die Blockgröße der verwendeten Verschlüsselung haben.
  • Wenn der iv-Parameter nicht die gleiche Länge wie die Blockgröße der verwendeten Verschlüsselung hat, müssen Sie die Funktion „openssl_decrypt(“ verwenden. )-Funktion im CBC-Modus.

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";
}
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage