Heim  >  Artikel  >  Backend-Entwicklung  >  Warum stimmen gehashte Passwörter bei Verwendung von „password_hash()“ und „password_verify()“ nicht überein?

Warum stimmen gehashte Passwörter bei Verwendung von „password_hash()“ und „password_verify()“ nicht überein?

DDD
DDDOriginal
2024-10-21 07:07:02634Durchsuche

Why Are Hashed Passwords Not Matching Using password_hash() and password_verify()?

PHP passwort_hash(), passwort_verify()

Problem:

Ein Registrierungsskript mit „password_hash()“ für die Passwortverschlüsselung und ein Anmeldeskript, das „password_verify()“ für die Passwortüberprüfung verwendet, stimmen mit den Passwörtern nicht richtig überein.

Antwort:

Hier ist eine Aufschlüsselung des Problems und eine Codelösung:

Wichtige Punkte:

  • password_hash() erstellt eine gehashte Darstellung des bereitgestellten Passworts unter Verwendung eines angegebenen Algorithmus.
  • „password_verify()“ vergleicht ein bereitgestelltes Passwort mit einem gehashten Passwort und gibt „true“ zurück, wenn sie übereinstimmen.
  • Die Funktion „password_verify()“ erfordert, dass der ursprüngliche Hash-Algorithmus im Vergleich verwendet wird.

Problem und Lösung:

Das Problem entsteht, wenn unterschiedliche Algorithmen für Hashing und Verifizierung verwendet werden. Die Fehlermeldung, die Sie erhalten haben („Nein. Passwörter“) weist darauf hin, dass das in der Datenbank gespeicherte gehashte Passwort nicht mit dem bei der Anmeldung eingegebenen ungehashten Passwort übereinstimmt.

Überarbeiteter Code:

Registrierung (Hashing):

<code class="php">$password = password_hash($password, PASSWORD_DEFAULT); // Using PASSWORD_DEFAULT or specific algorithm</code>

Anmeldung (Verifizierung):

<code class="php">if (password_verify($pwd, $row['password'])) {
    // Password matches...
}</code>

Fußnoten:

  • Stellen Sie sicher, dass die Passwortspalte in der Datenbank ausreichend lang ist (z. B. VARCHAR(255)), um das gehashte Passwort aufzunehmen.
  • Verwenden Sie vorbereitete Anweisungen zur Sicherheit und verhindern Sie SQL-Injection.

Das obige ist der detaillierte Inhalt vonWarum stimmen gehashte Passwörter bei Verwendung von „password_hash()“ und „password_verify()“ nicht überein?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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