bcrypt
password_hash / password_verify
bcrypt password hashing and verification.
Anleitung
Übersicht
Werkzeug zum Erstellen von Hashes mit bcrypt oder zum Überprüfen von Hash-Zeichenketten.
Ein häufiger Anwendungsfall für das Hashing ist die "Passwort-Speicherung".
Als Grundprinzip gilt: Ein Hash kann nicht in die Originaldaten zurückumgewandelt werden (Einwegfunktion).
Es ist nicht möglich, das ursprüngliche Passwort aus seinem bcrypt-Hash abzuleiten.
Deshalb werden Passwörter nicht direkt gespeichert — stattdessen wird üblicherweise der Hash gespeichert.
Dasselbe Passwort erzeugt immer denselben Hash.
Das bedeutet, dass Sie eine Zeichenkette durch Vergleich mit einem bekannten Hash verifizieren können.
(Zum Beispiel, um zu prüfen, ob ein Hash aus einem bestimmten Passwort generiert wurde)
Hash-Erstellung (password_hash)
Das bcrypt-Hashing wird mit einem Code wie dem folgenden durchgeführt.$hash = password_hash('string_to_hash', PASSWORD_BCRYPT, [
'cost' => 'cost',
]);
Von bcrypt generierte Hash-Zeichenketten enthalten einen Salt (zufällige Zeichenkette), daher wird jedes Mal eine andere Zeichenkette erzeugt.
$2y$10$Z0kGQ04hCto9dnMu.GyzWOWNQmoKyeF5PXH.zsrf/I.yNJRcbdN86
Der Standard-Kostenwert der password_hash-Funktion ist 10.
Obwohl password_hash einen Bereich von 4–31 akzeptiert, begrenzt dieses Werkzeug ihn auf 4–15, um eine übermäßige Serverlast zu vermeiden.
(Höhere Werte können sehr lange zum Verarbeiten benötigen.)
Hash-Verifizierung (password_verify)
bcrypt-Hash-Zeichenketten folgen einem spezifischen Format, das den Salt und die Anzahl der Iterationen enthält, sodass überprüft werden kann, ob ein Hash aus einer bestimmten Zeichenkette generiert wurde.
Die bcrypt-Hash-Verifizierung wird mit einem Code wie dem folgenden durchgeführt.$result = password_verify('original_string', 'hash_string_to_verify');