1. Einführung
Mcrypt ist eine Erweiterung von PHP, die die Kapselung häufig verwendeter Verschlüsselungsalgorithmen vervollständigt. Tatsächlich ist diese Erweiterung eine Kapselung der mcrypt-Standardklassenbibliothek. mcrypt hat eine ganze Reihe häufig verwendeter Verschlüsselungsalgorithmen wie DES, TripleDES, Blowfish (Standard), 3-WAY, SAFER-SK64, SAFER-SK128 und TWOFISH vervollständigt , TEA-, RC2- und GOST-Verschlüsselungsalgorithmus und bietet vier Blockverschlüsselungsmodelle: CBC, OFB, CFB und ECB.
2. Installation und Verwendung
Um diese Erweiterung verwenden zu können, müssen Sie zunächst die mcrypt-Standardklassenbibliothek installieren, die unter http://mcrypt.sourceforge heruntergeladen werden kann .netto. Die Kompilierungs- und Installationsmethoden dieser Erweiterung sind die gleichen wie bei regulären PHP-Erweiterungen und werden daher nicht im Detail erläutert.
3. Vier Blockverschlüsselungsmodelle
Mcrypt unterstützt vier Blockverschlüsselungsmodelle, eine kurze Beschreibung lautet wie folgt:
① ) Geeignet zum Verschlüsseln kleiner Mengen zufälliger Daten, z. B. zum Verschlüsseln von Benutzeranmeldekennwörtern.
② MCRYPT_MODE_CBC (Cipher Block Chaining) eignet sich für wichtige Dateitypen mit hoher Verschlüsselungssicherheitsstufe.
③ MCRYPT_MODE_CFB (Chiffre-Feedback) eignet sich für Situationen, in denen jedes Byte des Datenstroms verschlüsselt werden muss.
④ MCRYPT_MODE_OFB (Ausgaberückmeldung, in 8 Bit) ist mit dem CFB-Modus kompatibel, aber sicherer als der CFB-Modus. Der CFB-Modus führt zur Ausbreitung von Verschlüsselungsfehlern. Wenn ein Byte falsch ist, sind alle nachfolgenden Bytes falsch. Im OFB-Modus tritt dieses Problem nicht auf. Allerdings ist dieser Modus nicht sehr sicher und wird nicht empfohlen.
⑤ MCRYPT_MODE_NOFB (Ausgaberückmeldung, in nbit) ist mit OFB kompatibel und bietet aufgrund der Verwendung des Blockoperationsalgorithmus eine höhere Sicherheit.
⑥ MCRYPT_MODE_STREAM ist ein zusätzliches Modell, das für Stream-Verschlüsselungsalgorithmen wie WAKE oder RC4 bereitgestellt wird.
NOFB und STREAM sind nur gültig, wenn die Versionsnummer von mycrypt größer oder gleich libmcrypt-2.4.x ist. (Im Grunde sind jetzt alle größer als diese Version, die neueste Hauptversion von libmcrypt hat 4 erreicht)
Unterstützte Algorithmen und Modelle anzeigen
①. Listen Sie die von der aktuellen Umgebung unterstützten Modelle auf
② 🎜> Der Code lautet wie folgt:
um alle Ergebnisse aufzulisten.5. Verwendung von
php -r "var_dump(mcrypt_list_modes()); var_dump(mcrypt_list_algorithms());"
Beispiel 1:
Der einfachste Weg ist wie in Beispiel 1 gezeigt, diese Methode zeigt, dass $ Die Eingabe wird mit dem 3DES-Algorithmus verschlüsselt und der Verschlüsselungsschlüssel ist $key. Es wird jedoch nicht mehr empfohlen, diese Methode in der Entwicklung zu verwenden einmal. . Wenn Sie diese Methode unter PHP5 aufrufen, wird eine Warnmeldung mit der Meldung „PHP-Warnung: Versuchen Sie, eine leere IV zu verwenden, was NICHT empfohlen wird“ angezeigt.
Die offiziell empfohlene Verwendung ist in Beispiel 2 dargestelltBeispiel 2:<?php $key = "this is a secret key"; $input = "Let us meet at 9 o'clock at the secret place."; $encrypted_data = mcrypt_ecb (MCRYPT_3DES, $key, $input, MCRYPT_ENCRYPT); ?>
Der Entschlüsselungsprozess ist im Grunde derselbe wie bei der Verschlüsselung. Ersetzen Sie einfach mcrypt_generic($td, $input) durch mdecrypt_generic($td, $input). Natürlich müssen bei einem symmetrischen Verschlüsselungsalgorithmus wie 3des die für die Ver- und Entschlüsselung verwendeten Schlüssel genau gleich sein.
<?php $key = "this is a secret key"; $input = "Let us meet at 9 o'clock at the secret place."; // 打开mcrypt,或者mcrypt类型的资源对象,该对象使用ecb模式,使用3des作为加密算法。 $td = mcrypt_module_open('tripledes', '', 'ecb', ''); // 创建iv(初始化向量) $iv = mcrypt_create_iv (mcrypt_enc_get_iv_size($td), MCRYPT_RAND); // 根据密钥和iv初始化$td,完成内存分配等初始化工作 mcrypt_generic_init($td, $key, $iv); // 进行加密 $encrypted_data = mcrypt_generic($td, $input); // 反初始化$td,释放资源 mcrypt_generic_deinit($td); // 关闭资源对象,退出 mcrypt_module_close($td); ?>
Nicht alle Modelle erfordern IV, während CBC und EBC optional sind. Für den erforderlichen IV-Modus müssen die Verschlüsselungs- und Entschlüsselungs-IV-Werte genau gleich sein. Für CBC und EBC gilt diese Anforderung nicht. Es kann gleich oder unterschiedlich sein, es spielt keine Rolle.
7. Eine einfache Verschlüsselungs- und Entschlüsselungsklasse
Das obige ist der detaillierte Inhalt vonBeispielcode für PHP mcrypt-Verschlüsselung und -Entschlüsselung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!