PHP password_hash()-Funktion
PHP-Passwort-Hashing-Algorithmen
Die Funktion password_hash() wird verwendet, um einen Hash eines Passworts zu erstellen.
PHP-Versionsanforderungen: PHP 5 >= 5.5.0, PHP 7
Syntax
string password_hash ( string $password , int $algo [, array $options ] )
password_hash() verwendet einen ausreichend starken Einweg-Hashing-Algorithmus, um einen Hash eines Passworts zu erstellen. password_hash() ist mit crypt() kompatibel. Daher können mit crypt() erstellte Passwort-Hashes auch mit password_hash() verwendet werden.
Derzeit unterstützte Algorithmen:
-
PASSWORD_DEFAULT- Verwendet den bcrypt-Algorithmus (Standard in PHP 5.5.0). Beachten Sie, dass sich diese Konstante ändern wird, wenn PHP neuere, stärkere Algorithmen hinzufügt. Daher kann sich die Länge des mit dieser Konstante erzeugten Ergebnisses in Zukunft ändern. Daher kann die Spalte in der Datenbank, die das Ergebnis speichert, 60 Zeichen überschreiten (vorzugsweise 255 Zeichen). -
PASSWORD_BCRYPT- Verwenden SieCRYPT_BLOWFISHden Algorithmus, um einen Hash zu erstellen. Dadurch wird ein Hash erzeugt, der mit der Verwendung des Präfixes "$2y$" kompatibel ist.crypt()Das Ergebnis ist eine 60-stellige Zeichenfolge oder FALSE bei einem Fehler.FALSE。 -
PASSWORD_ARGON2I- Verwenden Sie den Argon2-Hashing-Algorithmus, um einen Hash zu erstellen.
Von PASSWORD_BCRYPT unterstützte Optionen:
-
salt (string) - Manuell ein Salt zum Hashen des Passworts angeben. Dadurch wird die automatische Generierung eines Salts vermieden.
Wenn dieser Wert weggelassen wird, generiert password_hash() automatisch ein zufälliges Salt für jeden Passwort-Hash. Dies ist ein beabsichtigter Betriebsmodus.
Hinweis: Die salt-Option ist seit PHP 7.0.0 veraltet. Es ist jetzt besser, einfach das standardmäßig generierte Salt zu verwenden.
-
cost (integer) - Repräsentiert die vom Algorithmus verwendeten Kosten. Beispiele für Kostenwerte finden Sie auf der crypt()-Seite.
Wenn weggelassen, ist der Standardwert 10. Diese Kosten sind ein guter Ausgangswert, aber Sie können diesen Wert je nach Ihrer Hardware erhöhen.
Von PASSWORD_ARGON2I unterstützte Optionen:
-
memory_cost (integer) - Der maximale Speicher (in Bytes), der bei der Berechnung des Argon2-Hashes verwendet werden soll. Standardwert:
PASSWORD_ARGON2_DEFAULT_MEMORY_COST。 -
time_cost (integer) - Die maximale Zeit, die bei der Berechnung des Argon2-Hashes verwendet werden soll. Standardwert:
PASSWORD_ARGON2_DEFAULT_TIME_COST。 -
threads (integer) - Die maximale Anzahl an Threads, die bei der Berechnung des Argon2-Hashes verwendet werden sollen. Standardwert:
PASSWORD_ARGON2_DEFAULT_THREADS。
Parameter description:
password: Ein von password_hash() erstellter Hash-Wert.
algo: Eine Passwort-Algorithmus-Konstante, die verwendet wird, um den Algorithmus beim Hashen des Passworts anzugeben.
options: Ein assoziatives Array, das Optionen enthält. Derzeit werden zwei Optionen unterstützt: salt, das Salz (Störzeichenfolge), das beim Hashen des Passworts hinzugefügt wird, und cost, das verwendet wird, um die Anzahl der rekursiven Ebenen des Algorithmus anzugeben. Beispiele für diese beiden Werte finden sich auf der crypt()-Seite.
Wenn sie weggelassen werden, werden ein zufälliges Salz und die Standardkosten verwendet.
Rückgabewert
Gibt das gehashte Passwort zurück oder FALSE im Fehlerfall.
Beispiele
Beispiel 1
Die Ausgabe ist:
$2y$10$.vGA1O9wmRjrwAVXD98HNOgsNpDczlqm3Jq7KnEd1rVAGv3Fykk1a
Beispiel 2
Die Ausgabe ist:
$2y$12$QjSH496pcT5CEbzjD/vtVeH03tfHKFy36d4J0Ltp3lRtee9HDxY3K
Beispiel 3
Beispiel für das manuelle Festlegen des Salz-Werts
Die Ausgabe ist:
$2y$11$q5MkhSBtlsJcNEVsYh64a.aCluzHnGog7TQAKVmQwO9C8xb.t89F.
Beispiel 4
Beispiel für password_hash() zum Ermitteln der optimalen Kosten
Die Ausgabe ist:
Appropriate Cost Found: 10
Beispiel 5
Beispiel mit Argon2:
Die Ausgabe ist:
Argon2 hash: $argon2i$v=19$m=1024,t=2,p=2$YzJBSzV4TUhkMzc3d3laeg$zqU/1IN0/AogfP4cmSJI1vc8lpXRW9/S0sYY2i2jHT0Andere Erweiterungen