Scrypt 在 verifyKdf 上失败,只有 "Error"
Scrypt fails at verifyKdf with just "Error"
我已经设置了 Scrypt 和哈希 - KDF - 工作正常。
但是,每当我尝试 verifyKdf()
时,我都会收到错误消息。
return scryptNative.verifySync(args[0], args[1]);
^
Error
at Object.verifyKdfSync (/home/arc/Desktop/scrypt-test/node_modules/scrypt/index.js:331:25)
我的哈希代码。
// 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')
})
问题是使用了 .toString('base64')
。虽然这本身不是问题,但你必须将其还原为缓冲区。
要修复它,请使用 new Buffer( /* Password */ , 'base64')
并且看起来像这样:
scrypt.verifyKdf(new Buffer(user.hasdPassword, 'base64'), password)
当使用 base64
hex
代替时,此解决方案同样有效。
我已经设置了 Scrypt 和哈希 - KDF - 工作正常。
但是,每当我尝试 verifyKdf()
时,我都会收到错误消息。
return scryptNative.verifySync(args[0], args[1]); ^
Error
at Object.verifyKdfSync (/home/arc/Desktop/scrypt-test/node_modules/scrypt/index.js:331:25)
我的哈希代码。
// 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')
})
问题是使用了 .toString('base64')
。虽然这本身不是问题,但你必须将其还原为缓冲区。
要修复它,请使用 new Buffer( /* Password */ , 'base64')
并且看起来像这样:
scrypt.verifyKdf(new Buffer(user.hasdPassword, 'base64'), password)
当使用 base64
hex
代替时,此解决方案同样有效。