Implementierung von OpenSSL anstelle von Mcrypt zur Verschlüsselung
In der PHP-Anwendung, die derzeit Mcrypt zur Datenverschlüsselung verwendet, besteht die Notwendigkeit eines Ersatzes Mcrypt mit OpenSSL. Die ursprüngliche Implementierung verwendete Blowfish-Verschlüsselung im ECB-Modus, aber das Ersetzen von Mcrypt durch OpenSSL stellt aufgrund unterschiedlicher Verschlüsselungsergebnisse und erforderlicher IV-Längen eine Herausforderung dar.
Die Diskrepanzen verstehen
Beides Die Verschlüsselungsfunktionen mcrypt_encrypt und openssl_encrypt führen zu unterschiedlichen Ergebnissen. Darüber hinaus erfordert mcrypt eine 56-Byte-IV für blowfish-ecb, während Openssl eine IV mit der Länge Null verwendet. Diese Unterschiede sind auf die unterschiedlichen Auffüllalgorithmen zurückzuführen, die von Mcrypt (PKCS#5) und OpenSSL (PKCS#7) verwendet werden.
Behebung von Verschlüsselungsunterschieden
Um die Verschlüsselungsunterschiede zu mildern Vor der Verschlüsselung mit mcrypt ist ein manuelles Auffüllen der Daten mit PKCS#7-Auffüllen erforderlich. Dies stellt die Kompatibilität mit dem von OpenSSL verwendeten Auffüllalgorithmus sicher. Das folgende Beispiel veranschaulicht diesen Ansatz:
$key = "anotherpassword1"; $str = "does it work 12"; $enc = mcrypt_encrypt(MCRYPT_BLOWFISH, $key, $str."", MCRYPT_MODE_ECB); $dec = mcrypt_decrypt(MCRYPT_BLOWFISH, $key, $enc, MCRYPT_MODE_ECB); echo(bin2hex($enc).PHP_EOL); // Encrypted data var_dump($dec); // Decrypted data $enc = openssl_encrypt($str, 'bf-ecb', $key, true); $dec = openssl_decrypt($enc, 'bf-ecb', $key, true); echo(bin2hex($enc).PHP_EOL); // Encrypted data var_dump($dec); // Decrypted data
Migrationsüberlegungen
Da das Entschlüsseln von mit Mcrypt verschlüsselten Daten mithilfe von OpenSSL unpraktisch ist, besteht die einzige Lösung darin, die Daten erneut zu verschlüsseln Daten. Dies stellt einen erheblichen Migrationsaufwand dar, da alle zuvor verschlüsselten Daten erneut mit OpenSSL verschlüsselt werden müssen.
Das obige ist der detaillierte Inhalt vonWie migriere ich von Mcrypt zu OpenSSL für die Datenverschlüsselung in PHP?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!