Javascript Bcryptjs异步不工作
我正在使用bcryptjs散列和比较节点服务器上的密码。以下是我的功能:Javascript Bcryptjs异步不工作,javascript,node.js,hash,bcrypt,Javascript,Node.js,Hash,Bcrypt,我正在使用bcryptjs散列和比较节点服务器上的密码。以下是我的功能: this.testPassword = function(pass1, pass2, callback) { bcrypt.compare(pass1, pass2, function(err, res) { callback(err, res); }.bind(this)); }; 以及函数调用: context.runQuery("...", function(resp, err) {
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) {
});
}
});
尽管这应该是异步的,但它会使服务器的速度降低200毫秒。这是bcrypt js模块或我的实现的问题。减少用于加密的saltround数。即使将其减少1,也可以显著提高性能 以下是bcrypt的摘录,用于比较基于SaltRound数的性能:
- 轮数=8:~40哈希/秒
- 轮数=9:~20哈希/秒
- 轮数=10:~10哈希/秒
- 轮数=11:~5哈希/秒
- 轮数=12:2-3哈希/秒
- 轮数=13:~1秒/哈希
- 轮数=14:~1.5秒/哈希
- 轮数=15:~3秒/哈希
- 轮数=25:~1小时/散列
- 轮数=31:2-3天/散列
希望这有助于减少用于加密的saltround的数量。即使将其减少1,也可以显著提高性能 以下是bcrypt的摘录,用于比较基于SaltRound数的性能:
- 轮数=8:~40哈希/秒
- 轮数=9:~20哈希/秒
- 轮数=10:~10哈希/秒
- 轮数=11:~5哈希/秒
- 轮数=12:2-3哈希/秒
- 轮数=13:~1秒/哈希
- 轮数=14:~1.5秒/哈希
- 轮数=15:~3秒/哈希
- 轮数=25:~1小时/散列
- 轮数=31:2-3天/散列
希望这有帮助代码对我来说很好。不太清楚你为什么说“慢下来”。。。但仅仅因为JS/node中的某些内容是异步的,并不意味着它不会影响性能。。。如果该操作非常密集,它将减慢速度(因为它不是物理并发的)。我想,您可以使用workers之类的工具来获得更好的结果。那么,使用async?来不阻止执行有什么意义呢?但这并不意味着性能更好,因为它没有利用物理并发功能。所以它应该减速,但不应该阻塞。代码对我来说似乎很好。不太清楚你为什么说“慢下来”。。。但仅仅因为JS/node中的某些内容是异步的,并不意味着它不会影响性能。。。如果该操作非常密集,它将减慢速度(因为它不是物理并发的)。我想,您可以使用workers之类的工具来获得更好的结果。那么,使用async?来不阻止执行有什么意义呢?但这并不意味着性能更好,因为它没有利用物理并发功能。所以它应该会变慢,但不应该阻塞。这很重要,因为除非比较函数完成,否则不会调用
回调
。请参阅提供的文档链接。另外,我建议你测试一下,看看有什么不同。我已经把它减少到8了。它仍然落后。我想async会解决这个问题,因为除非compare函数完成,否则不会调用回调。请参阅提供的文档链接。另外,我建议你测试一下,看看有什么不同。我已经把它减少到8了。它仍然落后。我想async可以解决这个问题