Mcrypt, eine alte Verschlüsselungsbibliothek, wurde aufgrund von Sicherheitslücken und dem Aufkommen von OpenSSL als Industriestandard eingestellt. Auch wenn der Wechsel von Mcrypt zu OpenSSL entmutigend erscheinen mag, kann er vereinfacht werden, indem man die wichtigsten Unterschiede versteht und geeignete Strategien anwendet.
Blowfish benötigt die von Ihnen verwendete Verschlüsselung Datenauffüllung zur Verschlüsselung. OpenSSL verwendet PKCS#7-Padding, während Mcrypt PKCS#5 verwendet. PKCS#7 erfordert eine Mindestfülllänge von 1, während PKCS#5 0 akzeptiert. Dieser Unterschied wirkt sich auf die verschlüsselten Ergebnisse aus, die von jeder Bibliothek erhalten werden.
Im ECB-Modus, den Sie Bei erneuter Verwendung ist kein Initialisierungsvektor (IV) erforderlich. Bei anderen Verschlüsselungsmodi ist dies jedoch nicht der Fall. Stellen Sie sicher, dass Sie die IV-Länge auf 0 setzen, wenn Sie OpenSSL für den ECB-Modus verwenden.
Um mit Mcrypt verschlüsselte Daten mit OpenSSL zu entschlüsseln, ist vor der Verschlüsselung eine manuelle Auffüllung mit PKCS#7 erforderlich . Dadurch wird die Kompatibilität zwischen den beiden Bibliotheken sichergestellt.
Der bereitgestellte Code demonstriert die wichtigsten Unterschiede und die richtigen Fülltechniken:
$key = "anotherpassword1"; $str = "does it work 12"; // Mcrypt padding $enc = mcrypt_encrypt(MCRYPT_BLOWFISH, $key, $str."", MCRYPT_MODE_ECB); // OpenSSL padding $enc = openssl_encrypt($str, 'bf-ecb', $key, true); // Decrypt using both methods $dec_mcrypt = mcrypt_decrypt(MCRYPT_BLOWFISH, $key, $enc, MCRYPT_MODE_ECB); $dec_openssl = openssl_decrypt($enc, 'bf-ecb', $key, true); echo bin2hex($enc) . PHP_EOL; var_dump($dec_mcrypt); echo PHP_EOL; var_dump($dec_openssl);
Dieser Code demonstriert eine erfolgreiche Ver- und Entschlüsselung Verwendung von Mcrypt und OpenSSL unter Anwendung von PKCS#7-Padding aus Kompatibilitätsgründen.
Das obige ist der detaillierte Inhalt vonSo konvertieren Sie die Mcrypt-Verschlüsselung in die OpenSSL-Verschlüsselung: Eine Schritt-für-Schritt-Anleitung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!