Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Passwort vor dem Speichern in der Datenbank verschlüsseln?

Während die folgende Antwort technisch immer noch korrekt ist, hat PHP neue Empfehlungen in Bezug auf die zu verwendenden Hash-Algorithmen. Ihre Empfehlung , ab PHP>=5.5.0, ist die Verwendung des password_hash und password_verify Funktionen zum Hashen und Verifizieren von gehashten Passwörtern . Als zusätzlichen Vorteil enthalten diese Funktionen automatisch ein individualisiertes Salt als Teil des zurückgegebenen Hashs, sodass Sie sich darum nicht explizit kümmern müssen.

Wenn es Ihnen egal ist, den tatsächlichen Wert des Passworts (aus dem verschlüsselten Wert der Datenbank) abzurufen, können Sie einen Einweg-Hash-Algorithmus darauf ausführen (z. B. sha1). Diese Funktion gibt eine Zeichenfolge (Hash) einer bestimmten Länge zurück, die (theoretisch) nicht verwendet werden kann, um die ursprüngliche Zeichenfolge zu finden. Es ist möglich, dass zwei verschiedene Zeichenfolgen denselben Hash erzeugen (Kollision genannt), aber das sollte bei Passwörtern kein Problem sein.
Beispiel: $pass = sha1($_REQUEST['pass']);

Eine Sache, um es ein wenig sicherer zu machen, besteht darin, dem Hash ein Salz hinzuzufügen und die Hash-Funktion erneut auszuführen. Dies erschwert die böswillige Generierung eines Passwort-Hashs, da der Salt-Wert nur serverseitig verarbeitet wird.
Beispiel: $pass = sha1(sha1($_REQUEST['pass']).sha1("[email protected]$#(%"));