21

Jestem trochę nowy, aby zagrać w hash frameworku i hasła. Próbowałem znaleźć jakieś rozwiązanie dla haszowania moich haseł i znalazłem BCrypt. Czy uważasz, że to wystarczająco dobre, aby mieszać hasła. A jeśli jest dobry, jak mogę go uruchomić w strukturze gry? (Używam gry 2.1.3) Dzięki!Jak hash hasło w strukturze gry (może z BCrypt)

Odpowiedz

40

Oto przykładowy projekt Gra Java pisałem, że używa BCrypt hash hasła, patrz newuser() i signin() czynności:

https://github.com/jroper/play-demo-twitbookplus/blob/master/app/controllers/UserController.java

Można zrobić podobne w Scala. Podsumowując, należy dodać jbycrpt do zależnościami w Build.scala:

val appDependencies = Seq(
    "org.mindrot" % "jbcrypt" % "0.3m" 
) 

Następnie hash hasła, za pomocą tego:

String passwordHash = BCrypt.hashpw(password, BCrypt.gensalt()); 

i weryfikacji za pomocą tego hasła:

BCrypt.checkpw(password, passwordHash) 
+1

jeśli BCrypt tworzy skrót za pomocą soli, musisz dodać sól do modelu użytkownika, prawda? W twoim przykładzie nie ma takiego pola dla "soli". –

+4

Nie, BCrypt zawiera zwykłą sól w wartości, którą wyprowadza. Nie jestem w 100% pewien formatu, ale byłoby to coś w rodzaju "randomsalthere: saltedhashhere". Musi więc najpierw przeanalizować wartość, wyodrębnić sól i mieszanie, a następnie ma zarówno hash, jak i sól do sprawdzania haseł. –