21

Sono un po 'nuovo per giocare al hashing di framework e password. Ho provato a trovare alcune soluzioni per l'hashing delle mie password e ho trovato BCrypt. Pensi che sia abbastanza buono per le password di hashing. E se è buono, come posso farlo funzionare nel framework di gioco? (Sto usando il gioco 2.1.3) Grazie!Come hash password nel framework di gioco (forse con BCrypt)

risposta

40

Ecco un progetto di gioco Java di esempio ho scritto che utilizza bcrypt di hash delle password, vedere le azioni newUser() e signin():

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

Si può fare simile a Scala. Per riassumere, aggiungi jbycrpt alle tue dipendenze in Build.scala:

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

le password hash Poi utilizza questo:

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

e verificare le password usando questo:

BCrypt.checkpw(password, passwordHash) 
+1

se BCrypt crea un hash utilizzando salt, è necessario aggiungere un salt al modello User, non è vero? Nel tuo esempio non esiste un campo per "sale". –

+4

No, BCrypt include il sale normale nel valore che emette. Non sono sicuro al 100% del formato, ma sarebbe qualcosa sulla falsariga di "randomsalthere: saltedhashhere". Quindi, per prima cosa deve analizzare il valore, estrarre il sale e l'hash, e quindi ha sia l'hash che il sale per eseguire i controlli della password. –