如何在play框架中哈希密码(也许与BCrypt一起)

Tig*_*991 25 bcrypt password-encryption playframework playframework-2.1

我有点新玩框架和密码哈希.我试图找到一些哈希密码的解决方案,我找到了BCrypt.你认为这对哈希密码是否足够好.如果它很好,我怎样才能让它在Play框架中运行?(我正在使用游戏2.1.3)谢谢!

Jam*_*per 45

这是我编写的Play Java项目示例,它使用BCrypt来哈希密码,请参阅newUser()和signIn()操作:

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

你可以在Scala中做类似的事情.总而言之,将jbycrpt添加到Build.scala中的依赖项:

val appDependencies = Seq(
  "org.mindrot" % "jbcrypt" % "0.3m"
)
Run Code Online (Sandbox Code Playgroud)

然后使用此哈希密码:

String passwordHash = BCrypt.hashpw(password, BCrypt.gensalt());
Run Code Online (Sandbox Code Playgroud)

并使用以下方法验证密码:

BCrypt.checkpw(password, passwordHash)
Run Code Online (Sandbox Code Playgroud)

  • 不,BCrypt在其输出的值中包含普通盐.我不是100%确定格式,但它会像"randomsalthere:saltedhashhere"那样.所以它只需要首先解析值,提取salt和hash,然后它有hash和salt来进行密码检查. (5认同)

Wil*_*ent 7

BCrypt适用于散列密码.使用Silhouette并使用BCrypt密码为您的密码插件.


foo*_*mip 5

这个项目为jbcrypt https://github.com/t3hnar/scala-bcrypt提供了一个不错的scala包装器-过去使用过它并且效果很好。