由于某种原因,bcrypt.hash
方法挂起并且从不调用其回调。
bcrypt.genSalt(29, function(err, salt) {
if (err) {
res.json({ success: false, msg: err.message });
} else {
bcrypt.hash(req.body.password, salt, function (err, hash) {
// This function is never called
res.json({ success: true });
});
}
});
有什么建议吗?
更新
它似乎与express.js&等等。
我刚刚创建了一个脚本文件test.js
:
var bcrypt = require('bcrypt');
var pwd = 'Test password 123';
bcrypt.genSalt(29, function(err, salt) {
if (err) {
console.log('1: ' + err.message);
} else {
console.log('Salt: ' + salt);
bcrypt.hash(pwd, salt, function (err, hash) {
if (err) {
console.log('2: ' + err.message);
} else {
console.log('Hash: ' + hash);
}
});
}
});
然后我通过使用node test.js
启动它。它输出一个salt,之后它会挂起并且bcrypt.hash在任何情况下都不会调用它的回调函数。我正在使用OS X,我安装了节点v7.8.0。
答案 0 :(得分:7)
29次盐轮意味着Math.pow(2, 29)
关键的扩张轮次,这需要很长时间。
举例说明:
你可以用数学来计算使用29轮的时间(它在260万秒或大约一个月的某个时间点)。