In PHP ist die Crypt () -Funktion eine häufig verwendete Verschlüsselungsfunktion, die hauptsächlich zum Verschlüsseln von Zeichenfolgen in einem Weg verwendet wird, insbesondere beim Kennwortspeicher. In diesem Artikel wird die Parameter der Crypt () -Funktion im Detail analysiert und anhand von Beispielen demonstrieren, wie die Strings von PHP mithilfe der Crypt () -Funktion von PHP sicher verschlüsseln können.
Crypt () ist eine integrierte Verschlüsselungsfunktion in PHP und wird basierend auf der Unix -Funktion von UNIX implementiert. Es verwendet unterschiedliche Verschlüsselungsalgorithmen (wie DES, MD5, Blowfish, SHA-256, SHA-512 usw.), um die Eingabebringung zu verschlüsseln und die verschlüsselte Zeichenfolge zurückzugeben.
Funktionsprototyp:
string crypt ( string $str [, string $salt ] )
$ str : Eine Zeichenfolge, die verschlüsselt werden muss, normalerweise ein Passwort.
$ salt (optional): Wird verwendet, um den Verschlüsselungsalgorithmus und die gesalzene Zeichenfolge anzugeben. Unterschiedliche Salze bestimmen den Verschlüsselungsalgorithmus und die Ergebnisse.
Dies ist eine Klartext -Zeichenfolge, die verschlüsselt wird, normalerweise das Kennwort des Benutzers.
Salzparameter sind der Schlüssel zur Bestimmung des Verschlüsselungsalgorithmus und der Ergebnisse. Verschiedene Salzformate repräsentieren verschiedene Algorithmen:
Standard -Verschlüsselung <br> Salz mit einer Länge von 2 Zeichen, zum Beispiel: "AB"
Dies ist die originellste Verschlüsselungsmethode mit schwacher Sicherheit und wird nicht empfohlen.
MD5 -Verschlüsselung <br> Beginnen Sie mit $ 1 $ und gefolgt von einem Salz von bis zu 8 Zeichen, zum Beispiel: "$ 1 $ M66NET12 $"
Dies wird mit dem MD5 -Algorithmus verschlüsselt.
Blowfish -Verschlüsselung <br> Beginnen Sie mit $ 2A $ , $ 2y $ , $ 2 Mrd. $ $ usw., gefolgt von einer zweistelligen Zahl, um den Kostenfaktor und 22-stelligen Salz darzustellen, zum Beispiel: "2y $ 10 $ M66Netalsaltsaltsaltsaltsa $ $"
Blowfish ist ein relativ sicherer Algorithmus.
SHA-256-Verschlüsselung <br> Beginnen Sie mit $ 5 $ und dann Salz, zum Beispiel: "$ 5 $ m66net $"
Sha-512-Verschlüsselung <br> Beginnen Sie mit $ 6 $ und dann Salz, zum Beispiel: "6 $ $ M66NET $"
// MD5 Salzbeispiel
$salt_md5 = '$1$m66net12$';
// Blowfish Salzbeispiel,10 Es ist der Kostenfaktor(cost factor)
$salt_blowfish = '$2y$10$m66netsaltsaltsaltsa$';
// SHA-256 Salzbeispiel
$salt_sha256 = '$5$m66net$';
// SHA-512 Salzbeispiel
$salt_sha512 = '$6$m66net$';
Im Folgenden finden Sie einige Beispiele, um anzuzeigen, wie Sie Zeichenfolgen mit der Funktion Crypt () verschlüsseln können.
$password = "mypassword";
$salt = "m6"; // 2Charakter Salz
$hashed = crypt($password, $salt);
echo "DESVerschlüsselungsergebnisse:" . $hashed;
$password = "mypassword";
$salt = '$1$m66net12$'; // von $1$ Das Salz am Anfang
$hashed = crypt($password, $salt);
echo "MD5Verschlüsselungsergebnisse:" . $hashed;
$password = "mypassword";
$salt = '$2y$10$m66netsaltsaltsaltsa$'; // Blowfish,kosten10
$hashed = crypt($password, $salt);
echo "BlowfishVerschlüsselungsergebnisse:" . $hashed;
$password = "mypassword";
$salt = '$6$m66net$';
$hashed = crypt($password, $salt);
echo "SHA-512Verschlüsselungsergebnisse:" . $hashed;
Nach dem Verschlingen des Passworts das eingegebene Kennwort bei der Überprüfung mit demselben Salz erneut entschlüsseln, und dann vergleichen, ob die Ergebnisse gleich sind.
// Angenommen, der in der Datenbank gespeicherte Passwort -Hash -Hash
$stored_hash = '$6$m66net$........'; // 从数据库取出的Verschlüsselungsergebnisse
// Passwort eingegeben, wenn sich der Benutzer anmeldet
$input_password = "mypassword";
// Das Salz entfernen,Normalerweise stored_hash Die ersten Teile,Die spezifische Länge hängt vom Algorithmus ab
$salt = substr($stored_hash, 0, strrpos($stored_hash, '$') + 1);
// Verschluss das Passwort mit demselben Salz neu
$input_hash = crypt($input_password, $salt);
if ($input_hash === $stored_hash) {
echo "Passwortüberprüfung erfolgreich";
} else {
echo "Passwortüberprüfung fehlgeschlagen";
}
Die Crypt () -Funktion unterstützt eine Vielzahl von Verschlüsselungsalgorithmen und wird durch Salzparameter bestimmt.
Es wird empfohlen, den Algorithmus zum Blowfish ( $ 2y $ ) oder des SHA-512 ( $ 6 $ ) zu verwenden, was sicherer ist.
Das Salz muss zufällig und einzigartig sein und im richtigen Format sein.
Verschlüsseln Sie bei der Passwortüberprüfung das Kennwort erneut mit dem Salz im verschlüsselten Hash -Wert und vergleichen Sie sie.