Ich bin ein bisschen neu zu spielen Framework und Passwort Hashing. Ich habe versucht, einige Lösungen für das Hashing meiner Passwörter zu finden, und ich habe BCrypt gefunden. Glauben Sie, dass das gut genug ist, um Passwörter zu hashen? Und wenn es gut ist, wie kann ich es im Spiel-Framework arbeiten lassen? (Ich benutze spielen 2.1.3) Danke!Wie Hash-Passwort in Play Framework (vielleicht mit BCrypt)
21
A
Antwort
40
Hier ist ein Beispiel Play-Java-Projekt schrieb ich, dass BCrypt verwendet Passwörter Hash finden Sie in den newUser() und Signin() Aktionen:
https://github.com/jroper/play-demo-twitbookplus/blob/master/app/controllers/UserController.java
Sie können in Scala ähnlich tun. Um es zusammenzufassen, fügen jbycrpt auf Ihre Abhängigkeiten in Build.scala:
val appDependencies = Seq(
"org.mindrot" % "jbcrypt" % "0.3m"
)
Dann Hash-Passwörter mit dieser:
String passwordHash = BCrypt.hashpw(password, BCrypt.gensalt());
Und überprüfen Passwörter mit diesem:
BCrypt.checkpw(password, passwordHash)
6
BCrypt ist gut für Hash-Passwörter. Verwenden Sie Silhouette und verwenden Sie die BCrypt password hasher für Ihr Passwort-Plugin.
3
Dieses Projekt bietet eine schöne Scala Wrapper um jbcrypt https://github.com/t3hnar/scala-bcrypt - habe es in der Vergangenheit verwendet und es funktioniert super.
Wenn BCrypt mit salt einen Hash erstellt, müssen Sie dem Benutzermodell ein Salz hinzufügen, nicht wahr? In Ihrem Beispiel gibt es kein solches Feld für "Salz". –
Nein, BCrypt enthält das einfache Salz in dem Wert, der ausgegeben wird. Ich bin mir des Formats nicht 100% ig sicher, aber es wäre etwas wie "randomsalthere: saltedhashhere". Es muss also zuerst den Wert analysieren, das Salz und den Hash extrahieren, und dann hat es sowohl den Hash als auch das Salz, um die Überprüfung des Passworts durchzuführen. –