Ich verwende php crypt
function, um ein Passwort sicher zu machen, aber wenn ich versuche, ein eingegebenes Passwort mit einem Passwort in der Datenbank zu vergleichen, funktioniert es nicht.
hier ist mein Code, um das Passwort an erster Stelle zu erstellen:
%Vor%hier versuche ich mit dem Passwort in einer anderen Funktion zu vergleichen:
%Vor%Dies funktioniert nicht.
Wenn ich beide Passwörter ausdrücke, sind die verschieden.
Warum sind die Passwörter unterschiedlich, obwohl ich das gleiche Passwort eingabe und die crypt-Funktion für beide verwende?
kann mir jemand in die richtige Richtung zeigen?
Ich weiß nicht, was ich sagen soll, das wird mehr Details hinzufügen als das, was alle anderen bereits gesagt haben ...
In heutigen Hash / Unhashing-Algorithmen wäre es daher unsicher, Kennwörter mit Standard-Hashfunktionen (z. B. MD5 / SHA256) zu speichern, da diese Art von Eingabe schnell und einfach aufgehoben werden kann.
password_hash()
, wie in anderen Antworten und Kommentaren angegeben, sollten Sie # 1 Weg sein, Passwörter sicher zu speichern, da es einen Einweg-Hashalgorithmus verwendet.
Und dann als Antwort auf Ihre ursprüngliche Frage, verwenden Sie hash_equals()
-Funktion, um Passwörter zu vergleichen.
Von den Dokumenten
Beispiel # 1 crypt () Beispiele
%Vor%
Der Code in der Frage erzeugt bei jedem Aufruf effektiv einen neuen Hash - der vorhandene Passwort-Hash muss als Salz übergeben werden, um ein konsistentes Ergebnis zu erhalten.
Wie auch in der Dokumentation erwähnt:
Die Verwendung von password_hash () wird empfohlen .
Ich würde weiter gehen und sagen, dass Sie definitiv password_hash
verwenden sollten, anstatt crypt
für die Passwortverwendung aufzurufen (vorausgesetzt, php & gt; = 5.5); in jedem Fall aber für welche Tools / Methoden Sie auch immer verwenden - bitte lesen Sie die Dokumentation, um zu wissen, wie man sie benutzt.
Verwenden Sie crypt
nicht direkt für Passwörter.
Wenn Sie PHP 5.5+ haben, dann verwenden Sie die eingebaute Funktion password_hash
, Wenn Sie PHP 5.3.7+ verwenden, verwenden Sie andernfalls das Polyfill für diese Funktion.
Versuchen Sie etwas wie das.
%Vor% Hier salt
-Parameter, um das Hashing zu aktivieren. Wenn nicht angegeben, wird das Verhalten durch die Implementierung des Algorithmus definiert und kann zu unerwarteten Ergebnissen führen.
Wie viele Leute hier sagten, sollten Sie password_hash PHP-Funktion verwenden.
Hier sehen Sie ein einfaches Beispiel, wie Sie es verwenden können:
%Vor%Wenn Sie eine ältere Version von PHP verwenden, können Sie, wie bereits erwähnt, polyfill installieren.
Tags und Links php