2017-01-17 12 views
1

bcryptjsを使用して、自分のノードサーバーでパスワードをハッシュして比較しています。ここに私の機能は次のとおりです。Bcryptjs Async not working

this.testPassword = function(pass1, pass2, callback) { 
    bcrypt.compare(pass1, pass2, function(err, res) { 
     callback(err, res); 
    }.bind(this)); 
}; 

と関数呼び出し:

context.runQuery("...", function(resp, err) { 
    if (!err) { 
     testPassword("test11", "test12", function(err2, resp2) { 

     }); 
    }   
}); 

これは非同期である必要があり、それは200msのためにサーバーが遅くなるという事実にもかかわらず。これはbcrypt-jsモジュールの問題か、実装した問題ですか?

+0

コードを助け私には罰金です。どうしてあなたが「遅くなる」ことを意味するのかは分かりませんが、JS /ノードでは何かが非同期であることがパフォーマンスに影響しないとは限りません...その操作が非常に集中すると、物理的に並行していない)。あなたは私が推測するより良い結果を得るために労働者のようなものを使うことができます。 –

+0

だから、非同期の使用のポイントは何ですか? –

+0

実行をブロックしないようにしていますが、物理的な並行機能を利用していないため、パフォーマンスが優れているとは限りません。だから...減速するはずだが、邪魔してはならない。 –

答えて

0

暗号化に使用するSaltRoundsの数を減らしてください。それを1つでも減らすと、パフォーマンスが大幅に向上します。ここ

はSaltRoundsの数に基づいて性能を比較するためdocumentation bcryptのからの抽出物である:= 8

  • ラウンド:〜40のハッシュ/秒
  • ラウンド= 9〜20のハッシュ/秒
  • ラウンド= 10:10〜ハッシュ/秒
  • ラウンド= 11:5〜ハッシュ/秒
  • ラウンド= 12:2~3ハッシュ/秒
  • ラウンド= 13:約1秒/ハッシュ
  • ラウンド= 14:〜1.5秒/ハッシュ
  • ラウンド= 15:〜3秒/ハッシュ
  • ラウンド= 25:〜1時間/ハッシュ
  • ラウンド= 31:2~3日/ハッシュ

希望これは

+0

compare関数が完了しない限り、 'callback'が呼び出されないので問題ありません。提供されているドキュメントのリンクを参照してください。また、違いを確認するためにテストすることをお勧めします。 –

+0

Iveはすでにそれを8に減らしました。それはまだ遅れています。私はasyncがそれを修正すると思った –