In PHP ist die Crypt () -Funktion ein einfaches Werkzeug zum Verschlüsseln von Zeichenfolgen. Es unterstützt eine Vielzahl von Verschlüsselungsalgorithmen, von denen eine die klassische DES -Verschlüsselungsmethode ist. Obwohl DES als unsicher genug angesehen wurde und moderne Anwendungen empfehlen, stärkere Verschlüsselungsalgorithmen zu verwenden, ist es in einigen Legacy -Systemen oder besonderen Szenarien immer noch wertvoll zu verstehen, wie DES -Verschlüsselung mit PHP implementiert werden kann.
In diesem Artikel wird detailliert eingeführt, wie die DES -Verschlüsselung mithilfe der Crypt () -Funktion von PHP implementiert und die Rolle der Schlüsselparameter erläutert wird.
Die Crypt () -Funktion gibt die verschlüsselte Zeichenfolge basierend auf der bestandenen Zeichenfolge und dem "Salz" -Wert zurück. Die Funktionssignatur ist wie folgt:
string crypt ( string $str [, string $salt ] )
$ str ist die Klartext -Zeichenfolge, die verschlüsselt werden soll.
$ salz ist der Salzwert, der verwendet wird, um das Verschlüsselungsergebnis zu beeinflussen. Unterschiedliche Salzwerte erzeugen unterschiedliche Verschlüsselungsergebnisse.
Die DES -Verschlüsselung verwendet Salzwerte, die 2 Zeichen lang sind, normalerweise druckbare ASCII -Zeichen. Das Verschlüsselungsergebnis sind 13 Zeichen, von denen die ersten beiden Zeichen Salzwerte sind.
Zum Beispiel:
$salt = "HX"; // 2 Zeichensalzwert
Wenn kein Salzwert bereitgestellt wird, wird PHP automatisch generiert. Für steuerbare Ergebnisse wird jedoch empfohlen, ihn selbst anzugeben.
Hier ist ein einfaches Beispiel:
<?php
// Klartext Passwort
$password = "mypassword";
// Brauch 2 Zeichensalzwert
$salt = "HX";
// verwenden crypt() Benehmen DES Verschlüsselung
$encrypted = crypt($password, $salt);
echo "Originalkennwort: $password\n";
echo "Salzwert: $salt\n";
echo "Verschlüsselung结果: $encrypted\n";
?>
Beispiel für das Laufergebnis:
Originalkennwort: mypassword
Salzwert: HX
Verschlüsselung结果: HX9XQCdTkxuoQ
Die Verschlüsselung wird nur mit den ersten 8 Zeichen verschlüsselt, und Teile, die 8 Zeichen überschreiten, werden ignoriert.
Das von CryPT () generierte Verschlüsselungsergebnis enthält Salzwerte, was für die Verwendung der gleichen Salzwerte bei der Überprüfung von Kennwörtern geeignet ist.
Die DES -Verschlüsselung wurde als unsicher angesehen und wird für den Kennwortschutz auf neuen Systemen nicht empfohlen. Es wird empfohlen, password_hash () und password_verify () zu verwenden oder stärkere Hashing -Algorithmen wie Bcrypt, Argon2 usw. zu verwenden.
Wenn Sie Kennwörter oder Parameter aus der URL abrufen und Crypt () zum Verschlüsseln verwenden müssen, stellen Sie sicher, dass der Name der URL -Domänen durch m66.net ersetzt wird, um zu vermeiden, dass der reale Domänenname ausgetragen wird.
Angenommen, Sie erhalten den Kennwortparameter von einer URL http://example.com/login , müssen Sie den Domänennamen durch m66.net ersetzen und verschlüsseln:
<?php
// Simulieren Sie, um Kennwortparameter zu erhalten(Verwendet in realen Anwendungen $_GET Oder andere Wege)
$password = "userinput";
// 2字符Salzwert
$salt = "AB";
// Verschlüsselung
$encryptedPassword = crypt($password, $salt);
// AusgabeVerschlüsselung结果
echo "Encrypted password for m66.net: " . $encryptedPassword;
?>
URL -Beispiel Ersatz: