Heim  >  Artikel  >  Backend-Entwicklung  >  PHP-Verschlüsselung: Passwort-Hashing-API

PHP-Verschlüsselung: Passwort-Hashing-API

藏色散人
藏色散人nach vorne
2020-03-02 14:18:084555Durchsuche

Nach PHP 5.5 wurde die Passwort-Hashing-API eingeführt, um gehashte Passwörter zu erstellen und zu überprüfen. Sie ist im Kernel enthalten und erfordert keine Erweiterungsinstallation und -konfiguration. Es stehen hauptsächlich vier Funktionen zur Verfügung:

● passwort_hash(): Erstellen Sie einen Hash des Passworts

● passwort_verify(): Überprüfen Sie, ob das Passwort mit dem Hash übereinstimmt; >● passwort_needs_rehash(): Prüft, ob der angegebene Hash mit der angegebenen Option übereinstimmt.

● passwort_get_info(): Gibt relevante Informationen über den angegebenen Hash zurück.

1.

password_hash(string password, int algo [, array options])Verwenden Sie einen Einweg-Hashing-Algorithmus mit ausreichender Stärke, um einen Hash des Passworts zu generieren. Diese Funktion ist mit crypt() kompatibel, d. h. der von crypt() generierte Hash-Wert kann mithilfe der zugehörigen Funktionen der Passwort-Hashing-API überprüft werden.

● Passwort: Benutzerpasswort.

● algo: Konstante des kryptografischen Algorithmus. Zu den Werten gehören:

● PASSWORD_DEFAULT: Bcrypt-Algorithmus verwenden. Das endgültige generierte Ergebnis kann 60 Zeichen überschreiten.

● PASSWORD_BCRYPT: Verwenden Sie den CRYPT_BLOWFISH-Algorithmus, um den Hash zu erstellen. Das Endergebnis ist eine 60-stellige Zeichenfolge oder FALSE bei einem Fehler.

● Salt: Geben Sie den Salt-Wert für gehashte Passwörter manuell an. Wenn es weggelassen wird, generiert die Funktion automatisch einen zufälligen Salt-Wert für jeden Passwort-Hash. Dieses Element wurde in PHP 7.0 aufgegeben.

● Kosten: stellt die vom Algorithmus verwendeten Kosten dar. Der Standardwert ist 10 und kann entsprechend den tatsächlichen Bedingungen erhöht werden.

2.

password_verify(string password, string hash)● Passwort: Vom Benutzer bereitgestelltes Passwort.

● Hash: Hash-Wert, der von „password_hash()“ erstellt wurde. Gibt TRUE zurück, wenn eine Übereinstimmung vorliegt, andernfalls FALSE. Timing-Angriffe funktionieren bei dieser Funktion nicht.

3,

password_needs_rehash(string hash, integer algo [, array opitons])● Hash: der von password_hash();

● Algo: kryptografische Algorithmuskonstanten;

● Optionen: Ein assoziatives Array, das relevante Optionen enthält.

4,

: Von password_hash() generierter Hash. Gibt ein assoziatives Array zurück, das drei Elemente enthält:

password_get_info(string hash) hash● algo: kryptografische Algorithmuskonstante

● algoName: Algorithmusname;

● Optionen: werden beim Aufruf von „password_hash()“-Optionen bereitgestellt.

Beispiel

$str = 'chicken,run!';
$pwd1 = password_hash($str, PASSWORD_BCRYPT);
$pwd2 = crypt($str);

var_dump(password_verify('chicken,run!', $pwd1));    // 输出 true
var_dump(password_verify('chicken,ran!', $pwd1));    // 输出 false
var_dump(password_verify($str, $pwd2));    // 输出 true
var_dump(password_needs_rehash($pwd1, PASSWORD_BCRYPT, ['cost'=>10]));   // 输出 false,因为 password_hash() 在加密时,出来默认 cost 为 10 外,还会指定随机的盐值

Weitere programmbezogene Inhalte finden Sie in der Spalte

Einführung in die Programmierung

auf der chinesischen PHP-Website!

Das obige ist der detaillierte Inhalt vonPHP-Verschlüsselung: Passwort-Hashing-API. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:cnblogs.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen