2017-02-16 2 views
3

Da Mcrypt in PHP 7.1 veraltet war und ich viele Daten mit mcrypt im bestehenden Projekt ver-/entschlüsselt habe, wie kann ich meinen PHP-Code von mcrypt nach OpenSSL migrieren? Ich habe den folgenden Code zu verschlüsseln:Wie entschlüsselt man einen String mit OpenSSL, der zuvor mit mcrypt verschlüsselt wurde?

$encoded = base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_256, 'salt', 'source string', MCRYPT_MODE_ECB)); 

und Entschlüsselungscode ist:

$source = mcrypt_decrypt(MCRYPT_RIJNDAEL_256, 'salt', base64_decode('encoded string'), MCRYPT_MODE_ECB); 

Welche openssl_ Funktionen soll ich in den obigen Beispielen die gleichen Ergebnisse ohne codierte Datenkonvertierung zu bekommen?

Oder besteht die einzige Möglichkeit darin, ein Skript auszuführen, das alle meine gespeicherten verschlüsselten Daten mit mcrypt entschlüsseln und mit openssl verschlüsseln wird?

Dank

+0

Verwenden Sie nicht den ECB-Modus, es ist nicht sicher, siehe [ECB-Modus] (https://en.wikipedia.org/wiki/Block_cipher_mode_of_operation#Electronic_Codebook_.28ECB.29), scrollen Sie nach unten zum Penguin. – zaph

+0

[PHP ersetzen Mcrypt mit OpenSSL] (http://Stackoverflow.com/q/9993909/608639)? – jww

Antwort

2

OpenSSL nicht die Rijndael-256 Chiffre haben; Es gibt kein Äquivalent - Sie müssen alles entschlüsseln und neu verschlüsseln.

Aber auch:

  • Sie Polsterung und Authentifizierung fehlt.
  • Verwenden Sie nicht den ECB-Modus.
  • "Salz" ist kein richtiger Verschlüsselungsschlüssel, noch ist es eine normale Zeichenfolge. Verwenden Sie random_bytes(), um Ihre Schlüssel mit der richtigen Schlüssellänge für den ausgewählten Algorithmus zu generieren.

Alle oben kann wie folgt zusammengefasst werden: tun es nicht auf eigene Faust, verwenden Sie eine gut überprüft Bibliothek wie defuse/php-encryption.

Kryptographie ist keine einfache Sache und Sie können es nicht richtig mit nur 5 Zeilen Code tun.

+0

Vielen Dank für Ihre Antwort. Können Sie eine geeignete random_bytes() Länge vorschlagen? Könnten Sie einen OpenSSL-Algorithmus ähnlich oder besser als Rijndael-256 für die regelmäßige Nutzung der Website wie die Verschlüsselung von Kennwörtern empfehlen? Meine eigentliche Aufgabe ist keine Benutzerkennwortverschlüsselung, aber ähnlich. –

+0

Es gibt keine allgemein gute Länge ... es hängt vom Algorithmus ab. Was den Algorithmus selbst betrifft, benutze einfach eine Bibliothek. – Narf

Verwandte Themen