Heim  >  Artikel  >  Backend-Entwicklung  >  Wie migriere ich von Mcrypt zu OpenSSL ohne wesentliche Codeänderungen?

Wie migriere ich von Mcrypt zu OpenSSL ohne wesentliche Codeänderungen?

Barbara Streisand
Barbara StreisandOriginal
2024-11-22 05:30:14368Durchsuche

How to Migrate from Mcrypt to OpenSSL without Significant Code Changes?

Migration von Mcrypt zu OpenSSL ohne umfangreiche Neukodierung

Hintergrund:

Ihre PHP-Anwendung verwendet derzeit Mcrypt zur Datenverschlüsselung mit eine Blowfish-Verschlüsselung und ein ECB-Modus. Sie stehen jedoch vor der Herausforderung, zur Verschlüsselung auf OpenSSL zu migrieren.

Hauptunterschiede:

  • OpenSSL verwendet PKCS#7-Padding, während Mcrypt PKCS#5 verwendet.
  • Im Gegensatz dazu erfordert OpenSSL im ECB-Modus keinen Initialisierungsvektor (IV). Mcrypt.

Lösung:

Um eine nahtlose Migration ohne nennenswerte Neucodierung durchzuführen, befolgen Sie diese Schritte:

  1. Verschlüsselte Daten neu erstellen: Füllen Sie die Daten manuell mit PKCS#7 auf, bevor Sie sie verschlüsseln Mcrypt. Beispielcode finden Sie unten:

    $key = "anotherpassword1";
    $str = "does it work 12";
    $enc = mcrypt_encrypt(MCRYPT_BLOWFISH, $key, $str."", MCRYPT_MODE_ECB);
  2. Verwenden Sie OpenSSL zur Entschlüsselung: Nachdem Sie die verschlüsselten Daten neu erstellt haben, verwenden Sie OpenSSL, um sie mit der richtigen Verschlüsselung und dem richtigen Modus zu entschlüsseln:

    $key = "anotherpassword1";
    $enc = "0e93dce9a6a88e343fe5f90d1307684c";
    $dec = openssl_decrypt($enc, 'bf-ecb', $key, true);
    echo $dec;

Hinweis: Sie haben erwähnt, dass für Mcrypt (56) und OpenSSL (0) unterschiedliche IV-Längen erforderlich sind. Im ECB-Modus werden jedoch keine IVs verwendet.

Wenn Sie diese Schritte befolgen, können Sie ohne umfangreiche Codeänderungen von Mcrypt auf OpenSSL migrieren und so die Kompatibilität mit Ihren vorhandenen verschlüsselten Daten sicherstellen.

Das obige ist der detaillierte Inhalt vonWie migriere ich von Mcrypt zu OpenSSL ohne wesentliche Codeänderungen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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