PHP
Referenzliste
password_hash
Password Hashing Funktionen
Befehl:
string password_hash ( string $password , integer $algo [, array $options ] )
Parameter-Liste:
Beschreibung | |
---|---|
Das Kennwort des Benutzers. | |
Ein Passwort Algorithmus konstant bezeichnet den Algorithmus zu verwenden, wenn das Passwort Hashing. | |
Ein assoziatives Array mit Optionen. Siehe die Passwort-Algorithmus Konstanten für die Dokumentation zu den unterstützten Optionen für jeden Algorithmus. Wenn weggelassen, eine zufällige Salz wird erstellt und der Standardwert Kosten verwendet werden. |
Beschreibung:
password_hash() erstellt eine neue Passwort-Hash mit einer starken Einweg-Hash-Algorithmus. password_hash() ist kompatibel mit crypt(). Deshalb Passwort-Hashes von crypt() verwendet werden erstellt mit password_hash().Die folgenden Algorithmen werden derzeit unterstützt:
PASSWORD_DEFAULT
- Verwenden Sie den bcrypt Algorithmus (default ab PHP 5.5.0 ). Beachten Sie, dass diese Konstante wurde entwickelt, um im Laufe der Zeit ändern, wie neue und stärkere Algorithmen hinzugefügt werden zu PHP. Aus diesem Grund kann die Länge des aus der Verwendung dieser Kennung umgeschaltet Zeit. Daher empfiehlt es sich, das Ergebnis in einer Datenbank-Spalte, die Sie weiter speichern über 60 Zeichen ( 255 Zeichen wäre eine gute Wahl sein ).PASSWORD_BCRYPT
- Verwenden Sie denCRYPT_BLOWFISH
Algorithmus schaffen die Hash. Dadurch wird eine Standard crypt() kompatibel mit Hash das "$2y$"-Kennung . Das Ergebnis wird immer eine 60 Zeichenkette sein, Im Fehlerfall WIRDfalse
zurückgegeben .Unterstützte Optionen:- salt - manuell eine salt zu verwenden, wenn das Passwort Hashing. Beachten Sie, dass dies ausser Kraft setzen und verhindern, dass ein Salz aus , die automatisch generiert.
Wenn ausgelassen, wird eine zufällige Salz durch password_hash() erzeugt werden für jeder Passwort Hashing. Dies ist die Betriebsart bestimmt. - cost - das kennzeichnet den algorithmischen cost, die verwendet werden sollten. Beispiele für diese Werte finden Sie auf der crypt() Seite. Wenn ausgelassen, wird ein Standardwert von 10 verwendet werden. Dies ist eine gute Geplante cost, aber Sie können prüfen, zunehmende es abhängig von Ihrer Hardware.
- salt - manuell eine salt zu verwenden, wenn das Passwort Hashing. Beachten Sie, dass dies ausser Kraft setzen und verhindern, dass ein Salz aus , die automatisch generiert.
Aktiv in Version:
(PHP 5 >= 5.5.0, PHP 7)
Hinweis:
Hinweis:
Es wird empfohlen, dass Sie diese Funktion auf Ihren Servern zu testen, und stellen Sie die Parameter so, dass Kosten der Ausführung der Funktion dauert ca. 0,1 bis 0,5 Sekunden. Das Skript in dem obigen Beispiel wird Ihnen helfen, wählen Sie eine gute Kosten-Wert für Ihre Hardware.
Updates zu unterstützten Algorithmen von dieser Funktion (oder Änderungen an der Standardkonfiguration ein) müssen sich an die Regeln folgen:
- Jede neue Algorithmus muss in Kern für mindestens 1 volle PHP-Versionen vor immer Standard sein. Also, wenn zum Beispiel ein neuer Algorithmus in 5.5.5 hinzugefügt wird, würde es nicht für Standard-bis 5.7 (seit 5.6 wäre die erste vollständige Version sein). Aber wenn ein anderer Algorithmus in 5.6.0 hinzugefügt wurde, wäre es auch kommen für Verzug 5.7.0.
- Der Standardwert sollte nur auf einem vollständigen Release (5.6.0, 6.0.0, etc.) und nicht von einer Revision Release ändern. Die einzige Ausnahme ist in einer Notsituation, wenn eine kritische Sicherheitslücke in der aktuellen Standard zu finden ist.
Warnung:
Warnung:
Es wird dringend empfohlen, dass Sie erzeugen keine eigene Salz für diese Funktion. Es wird eine sichere Salz automatisch für Sie, wenn Sie nicht angeben, ein.
Siehe auch:
password_hash() - Beispiel:
Eingabe:
<?php /** * We just want to hash our password using the current DEFAULT algorithm. * This is presently BCRYPT, and will produce a 60 character result. * * Beware that DEFAULT may change over time, so you would want to prepare * By allowing your storage to expand past 60 characters (255 would be good) */ echo password_hash("rasmuslerdorf", PASSWORD_DEFAULT)."\n"; ?>
Ausgabe:
$2y$10$.vGA1O9wmRjrwAVXD98HNOgsNpDczlqm3Jq7KnEd1rVAGv3Fykk1a
password_hash() - Beispiel 2: Setzen Kosten manuell
Eingabe:
<?php /** * In this case, we want to increase the default cost for BCRYPT to 12. * Note that we also switched to BCRYPT, which will always be 60 characters. */ $options = [ 'cost' => 12, ]; echo password_hash("rasmuslerdorf", PASSWORD_BCRYPT, $options)."\n"; ?>
Ausgabe:
$2y$12$QjSH496pcT5CEbzjD/vtVeH03tfHKFy36d4J0Ltp3lRtee9HDxY3K
password_hash() - Beispiel 3: Setzen Kosten manuell
Eingabe:
<?php /** * Note that the salt here is randomly generated. * Never use a static salt or one that is not randomly generated. * * For the VAST majority of use-cases, let password_hash generate the salt randomly for you */ $options = [ 'cost' => 11, 'salt' => mcrypt_create_iv(22, MCRYPT_DEV_URANDOM), ]; echo password_hash("rasmuslerdorf", PASSWORD_BCRYPT, $options)."\n"; ?>
Ausgabe:
$2y$11$q5MkhSBtlsJcNEVsYh64a.aCluzHnGog7TQAKVmQwO9C8xb.t89F.
password_hash() - Beispiel 4: Suche nach einem guten Kosten
Eingabe:
<?php /** * This code will benchmark your server to determine how high of a cost you can * afford. You want to set the highest cost that you can without slowing down * you server too much. 10 is a good baseline, and more is good if your servers * are fast enough. */ $timeTarget = 0.2; $cost = 9; do { $cost++; $start = microtime(true); password_hash("test", PASSWORD_BCRYPT, ["cost" => $cost]); $end = microtime(true); } while (($end - $start) < $timeTarget); echo "Appropriate Cost Found: " . $cost . "\n"; ?>
Ausgabe:
Appropriate Cost Found: 11
Password Hashing Funktionen