21

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)

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) 
+1

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". –

+4

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. –