21

私はフレームワークとパスワードのハッシングを少し新しくしました。私は自分のパスワードをハッシュするためのいくつかのソリューションを見つけようとしましたが、BCryptが見つかりました。パスワードをハッシュするには十分だと思いますか?それが良いのであれば、それをどのようにプレーフレームワークで動作させることができますか? (私は遊び2.1.3を使用しています)ありがとう!プレイフレームワークでパスワードをハッシュする方法(多分BCryptで)

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

あなたはScalaで同様の操作を行うことができます。ここでは

答えて

40

は、サンプルが、私はそれがNEWUSERを(参照、パスワードをハッシュするbcryptのを使って書いた)とサインイン()アクションJavaプロジェクトを再生します。この使用

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

そして、ハッシュパスワードを::要約すると、Build.scalaであなたの依存関係にjbycrptを追加

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

をそして、この使用してパスワードを確認します。

BCrypt.checkpw(password, passwordHash) 
+1

BCryptがsaltを使用してハッシュを作成する場合、ユーザーモデルに塩を追加する必要がありますか?あなたの例では "塩"のようなフィールドはありません。 –

+4

いいえ、BCryptには、出力する値にプレーン塩が含まれています。私は形式の100%ではないが、それは "randomsalthere:saltedhashhere"の行に沿った何かになるだろう。だから、最初に値を解析して、塩とハッシュを抽出し、パスワードチェックを行うためにハッシュと塩の両方を持っているだけです。 –

6

bcryptのが適していますハッシングパスワード。 Silhouetteを使用し、パスワードプラグインにBCrypt password hasherを使用してください。

3

このプロジェクトは、jbcrypt https://github.com/t3hnar/scala-bcryptの素晴らしいスケーララッパーを提供しています。過去にそれを使用していて、うまく機能しています。