Heim > Artikel > Backend-Entwicklung > Warum erzeugen die Funktionen „password_hash()' und „password_verify()' in PHP unterschiedliche Ergebnisse?
Diskrepanz bei der Passwortüberprüfung in den PHP-Funktionen „password_hash()“ und „password_verify()“
In PHP sind dies die Funktionen „password_hash()“ und „password_verify()“. Wird häufig zur sicheren Handhabung und Überprüfung von Benutzerkennwörtern verwendet. Bestimmte Szenarien können jedoch zu unerwarteten Diskrepanzen beim Passwortabgleich führen.
Problemstellung
Sie haben eine Diskrepanz beim Passwortabgleich festgestellt, als Sie „password_hash()“ zum Verschlüsseln von Passwörtern und verwendet haben passwort_verify() um sie zu überprüfen. Sie haben festgestellt, dass das Ergebnis von „password_verify()“ nicht mit dem ursprünglichen unverschlüsselten Passwort übereinstimmt.
Verstehen der Diskrepanz
Die Diskrepanz entsteht aufgrund der Natur der Hashing-Algorithmen . Beim Hashing wird eine reine Texteingabe in eine Ausgabe fester Länge (sogenannter Hash) umgewandelt, die eindeutig und unvorhersehbar ist. Dieser Prozess ist irreversibel, was bedeutet, dass es rechnerisch nicht möglich ist, die ursprüngliche Eingabe aus dem Hash abzurufen.
Wenn Sie „password_hash()“ zum Verschlüsseln eines Passworts verwenden, wird mithilfe eines bcrypt-Algorithmus ein Hash generiert. Dieser verschlüsselte Hash wird dann in der Datenbank gespeichert. Wenn ein Benutzer versucht, sich anzumelden, wird das bereitgestellte Passwort mithilfe von „password_hash()“ erneut gehasht und mit dem gespeicherten Hash verglichen.
Behebung der Diskrepanz
Um sicherzustellen, dass das Passwort korrekt ist Bei der Überprüfung ist es wichtig, denselben Algorithmus und dieselbe Konfiguration zu verwenden, die bei der ersten Hashung des Passworts verwendet wurden. Hier sind die Schritte, die Sie unternehmen müssen:
<code class="php">$password = password_hash($pwd, PASSWORD_DEFAULT); // Using default bcrypt algorithm</code>
<code class="php">if (password_verify($pwd, $password)) { // Password matches }</code>
Durch Befolgen dieser Schritte können Sie sicherstellen, dass die Funktionen „password_hash()“ und „password_verify()“ funktionieren korrekt und sorgt für eine zuverlässige und sichere Passwortverwaltung und -überprüfung.
Das obige ist der detaillierte Inhalt vonWarum erzeugen die Funktionen „password_hash()' und „password_verify()' in PHP unterschiedliche Ergebnisse?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!