私は、パスワードをハッシュするためにnode.jsにpbkdf2を使用しています。crypto.pbkdf2は非同期ですが、どうすれば同期として扱うことができますか?
私の問題は、私が認証要求に応答しており、渡された資格情報が正しい場合は認証の途中です。私は、pbkdf2が潜在的に(反復のサイズに依存して)長い時間を取る可能性があるので、非同期であると推測しています。しかし、残りの認証ロジックを別のメソッドに移動してコールバックを利用するのは面倒なようです。
タイマーを使用するか、連続した認証ロジックをすべて別の機能に投げるよりも優れたアプローチがありますか?ほとんどの人がコールバックを使うべきだと言っていますが、私のユースケースではこれは意味をなさないものです。私は渡されたパスワードにpbkdf2を適用するまで認証を続けることができません。
私はbcryptがblowfish(node.bcrypt.jsプロジェクトのwikipediaリンク)に基づいていると仮定していますか?私は128ビット以上の塩と10000回の反復でpbkdf2を使用していましたが、これはNISTの承認を受けたものですが、ブリーフィングbcryptはそうではありません(wikipedia artical参照)。私はbcryptがより安全であるというあなたのコメントに興味があります。私の目的のために、それは最もprobです。それほど重要ではありませんが、私は最も安全なアプローチを使用したいと思います。 – Metalskin
@ Metalskin、もう少し調べました。 'Bcrypt'は短いパスフレーズでは強くなりますが、55文字以上のパスフレーズで' pbkdf2'に失われ始めます。しかし、どちらも安全であるため、実際の違いはありません。詳細については、[この回答](http://stackoverflow.com/questions/4433216/password-encryption-pbkdf2-using-sha512-x-1000-vs-bcrypt)を参照してください。 –
リンクが本当に役に立ちましたので、私は55文字以上になるとは思わないので、bcryptを使うのは大丈夫です。 scryptの方がいいかもしれませんが、node.jsのアクティブなプロジェクトは見つかりませんでした。 – Metalskin