我已经设置了氪星和哈希- KDF -工作正常。
但是,每当我尝试verifyKdf()时,我都会得到一个错误。
返回scryptNative.verifySync(args,args1);^ 错误 在(/home/arc/Desktop/scrypt-test/node_modules/scrypt/index.js:331:25) Object.verifyKdfSync
我的密码来破解它。
// a promise chain...
.then(() => scrypt.kdf(newPassword, scryptParameters))
.then(hashedPassword => {
user.hashedPassword = hashedPassword.toString('base64')
resolve(store.save(user.id, user))
})然后验证:(这里它属于catch()和err简单包含"Error")
scrypt.verifyKdf(user.hashdPassword, enteredPassword)
.then(result => {
if (result) return resolve(user)
else return reject('Wrong password')
})
.catch(err => {
console.log('scrypt verify failed: ', err)
return reject('Internal Error')
})发布于 2016-12-03 10:00:07
问题是使用了.toString('base64')。虽然这本身并不是问题,但您必须将其还原回缓冲区。
要修复它,请使用new Buffer( /* Password */ , 'base64'),如下所示:
scrypt.verifyKdf(new Buffer(user.hasdPassword, 'base64'), password)当使用base64 hex时,此解决方案也同样有效。
https://stackoverflow.com/questions/40946504
复制相似问题