我想使用Node.js中的加密模块为pbkdf2密码哈希编写一个异步函数。虽然randomBytes函数可以正常工作,但在等待运行pbkdf2时出现以下错误:“错误:未向pbkdf2提供回调”。
我知道一种解决方法可能是使用pbkdf2Sync(),但我不明白为什么异步版本不起作用,或者等待同步功能是否正确?
节点v 8.10.0
async function hashPassword(password){
let salt;
let hash;
let pass;
try{
salt = await Crypto.randomBytes(Config.SALT_BYTES);
hash = await Crypto.pbkdf2(password, salt, Config.ITERATIONS, Config.HASH_BYTES, 'sha512');
pass = salt+hash;
return pass;
}
catch(err){
console.log('ERR: ', err);
}
}
最佳答案
一种解决方案是将方法包装在promise中。任何需要回调的方法都可以通过这种方式转换为支持异步/等待的方法。
function pbkdf2Async(password, salt, iterations, keylen, digest) {
return new Promise( (res, rej) => {
crypto.pbkdf2(password, salt, iterations, keylen, digest, (err, key) => {
err ? rej(err) : res(key);
});
});
}
关于node.js - 使用异步等待时出现“错误:未向pbkdf2提供回调”,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49717731/