Warum generiert Password_hash unterschiedliche Hashes für dieselbe Eingabe?

Barbara Streisand
Freigeben: 2024-10-17 10:49:30
Original
938 Leute haben es durchsucht

Why Does Password_hash Generate Different Hashes for the Same Input?

Password_hash generiert verschiedene Hashes für die gleiche Eingabe

In einem Anmeldesystem ist es aus Sicherheitsgründen üblich, Passwörter zu hashen. Bei einigen Benutzern kann jedoch ein Problem auftreten, bei dem „password_hash“ jedes Mal einen anderen Hashwert für dasselbe Passwort liefert. Dies kann eine erfolgreiche Verifizierung mit „password_verify()“ verhindern.

Das Verhalten von Password_hash verstehen

Password_hash ist so konzipiert, dass für jeden Hashing-Vorgang ein eindeutiger Salt generiert wird. Dieses Salt wird vor dem Hashing an das Passwort angehängt, sodass es praktisch unmöglich ist, den Hash-Wert vorherzusagen. Selbst das gleiche Passwort erzeugt aufgrund des zufälligen Salt jedes Mal einen anderen Hash.

Behebung des Verifizierungsproblems

Um das Passwort zu verifizieren, müssen Sie das Original bereitstellen ungehashtes Passwort als erstes Argument für Password_verify(). Das zweite Argument sollte das in der Datenbank gespeicherte Hash-Passwort sein.

Beispielcode für die Verifizierung

$password4 = 'PlaintextPassword';
$dbpassword = 'HashedPasswordFromDatabase';

if (password_verify($password4, $dbpassword)) {
    // Password verified
} else {
    // Password does not match
}
Nach dem Login kopieren

Zusätzliche Sicherheitsmaßnahmen

Auf Wunsch können Sie die Sicherheit von password_hash erhöhen, indem Sie den Kostenfaktor erhöhen. Die Standardkosten betragen 10, Sie können jedoch für zusätzlichen Schutz einen höheren Wert wie 15 festlegen.

$password = password_hash($password4, PASSWORD_DEFAULT, ['cost' => 15]);
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWarum generiert Password_hash unterschiedliche Hashes für dieselbe Eingabe?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage