Scrypt 在验证 Kdf 时失败,只需"Error"



我已经设置了Scrypt和Hashing -KDF-工作正常。

但是,每当我尝试verifyKdf()时,我都会出现错误。

返回scryptnative.verysync(args [0],args [1]); ^

错误

在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简单包含"错误")

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时,此解决方案也将起作用。

相关内容

  • 没有找到相关文章

最新更新