In PHP ist die Crypt () -Funktion ein herkömmliches und leistungsstarkes Kennwortverschlüsselungswerkzeug. Es implementiert das Hashing von Kennwörtern, die auf verschiedenen Verschlüsselungsalgorithmen basieren (wie DES, MD5, Blowfish, SHA-256, SHA-512 usw.), was zum Speichern und Überprüfen von Benutzerkennwörtern geeignet ist. In diesem Artikel wird eingehend eingehalten, wie die Funktion Crypt () verwendet wird, um ein sichereres Passwort zu generieren und die beste Sicherheitskonfiguration zu teilen, um die Stärke des Kennworts zu erhöhen.
Die grundlegende Verwendung der Crypt () -Funktion ist wie folgt:
$hashed_password = crypt($password, $salt);
$ password ist das ursprüngliche Passwort, das vom Benutzer eingegeben wurde.
$ salt ist der Salzwert, der zur Steuerung der Verschlüsselungsmethode und des Ergebniss verwendet wird, wodurch das Hashing -Algorithmus und das Ergebnisformat bestimmt werden.
Das Salzwertformat wirkt sich direkt auf die Sicherheit des Kennworts aus. Die von Crypt () unterstützten Salzwertformate umfassen:
DES (Standard, die Salzlänge beträgt 2 Zeichen, schwache Sicherheit)
MD5 (Salzformat: $ 1 $ + 8 Zeichen Salz)
Blowfish (Salzformat: $ 2A $ oder $ 2y $ + zweistellige Kosten + 22-Charakter-Salz)
SHA-256 (Salzformat: $ 5 $ + Salz)
SHA-512 (Salzformat: $ 6 $ + Salz)
Die Sicherheit des Kennwortspeichers hängt nicht nur vom Algorithmus selbst ab, sondern auch von der Stärke des Salzes und der Komplexität des Algorithmus:
Die Funktion von Salz : verhindert Regenbogentischangriffe und stellt sicher, dass das gleiche Passwort jedes Mal unterschiedlich verschlüsselt wird.
Algorithmusstärke : komplexere Algorithmen und höhere Rechenkosten (Arbeitsfaktor) können Brute-Force-Risse widerstehen.
Das folgende Beispiel zeigt, wie Crypt () in Verbindung mit dem Blowfish -Algorithmus ( $ 2y $ ) verwendet wird, um ein sichereres Passwort zu generieren:
<?php
function generateSecureHash($password) {
// erzeugen22Ein bisschen sicheres Zufallssalz
$salt = substr(str_replace('+', '.', base64_encode(random_bytes(16))), 0, 22);
// BlowfishKostenparameter des Algorithmus,Der Umfang ist im Allgemeinen04~31,Standard12Sicherer
$cost = '12';
// Erstellung einer Salzschnur,Das Format ist $2y$kosten$Salz
$blowfish_salt = sprintf('$2y$%02d$%s', $cost, $salt);
// erzeugenVerschlüsselter Passwort -Hash
return crypt($password, $blowfish_salt);
}
// prüfen
$password = "MyS3cureP@ss!";
$hash = generateSecureHash($password);
echo "Verschlüsselter Passwort -Hash: " . $hash;
?>
Verwenden Sie Random_Bytes () , um zufällige Salze mit hoher Intensität zu erzeugen.
$ 2y $ wird verwendet, um den Blowfish -Algorithmus darzustellen, der für sichere Kennwortspeicher geeignet ist.
Der Kostenparameter $ Kosten bestimmt die Komplexität des Algorithmus. Je höher die Kosten, desto sicherer ist es, desto länger ist die Berechnungszeit. 12 ist der empfohlene Wert für die Ausgleichsleistung und Sicherheit.
Beim Überprüfen des Kennworts können Sie das vom Benutzer eingegebene Kennwort mit dem in der Datenbank gespeicherten Hash verwenden, indem Sie die Funktion Crypt () verwenden, um zu vergleichen, ob die Ergebnisse gleich sind:
<?php
function verifyPassword($password, $stored_hash) {
// verwenden存储的哈希中的Salz重新加密密码
$hash = crypt($password, $stored_hash);
// verwendenhash_equalsZeitangriffssicherheitsvergleich verhindern
return hash_equals($hash, $stored_hash);
}
// prüfen验证
$input_password = "MyS3cureP@ss!";
if (verifyPassword($input_password, $hash)) {
echo "Passwortüberprüfung erfolgreich!";
} else {
echo "Fehlerkennwort!";
}
?>
Verwenden Sie starke Zufallssalze : Vermeiden Sie die Verwendung fester oder vorhersehbarer Salze.
Wählen Sie den richtigen Algorithmus : Priorisieren Sie Blowfish ( $ 2y $ ), SHA-256 ( $ 5 $ ) oder SHA-512 ( $ 6 $ ).
Kostenparameter anpassen : Je höher die Kosten, desto zeitaufwändiger die Berechnung, aber je stärker die Sicherheit. Angemessener Saldo.
Kennwortversuche einschränken : Verhindern Sie das Knacken von Brute-Force.
Kombiniert mit Kennwortkomplexitätsstrategie : Zwangs Passwortlänge und Charaktervielfalt.
Aktualisieren Sie regelmäßig Algorithmen und Kostenparameter : Wenn die Rechenleistung zunimmt, werden die Sicherheitsstandards rechtzeitig aktualisiert.
PHP -offizielles Dokument: https://www.m66.net/manual/zh/function.crypt.php