【问题标题】:Scrypt fails at verifyKdf with just "Error"Scrypt 在 verifyKdf 上失败,只有“错误”
【发布时间】:2017-04-18 04:59:38
【问题描述】:

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

但是,每当我尝试verifyKdf() 时,我都会收到错误消息。

return scryptNative.verifySync(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')
     })

【问题讨论】:

    标签: node.js scrypt


    【解决方案1】:

    问题是使用了.toString('base64')。虽然这本身不是问题,但您必须将其恢复为缓冲区。

    要修复它,请使用new Buffer( /* Password */ , 'base64'),看起来像这样:

    scrypt.verifyKdf(new Buffer(user.hasdPassword, 'base64'), password)
    

    当使用base64 而不是hex 时,此解决方案也可以正常工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-07-14
      • 1970-01-01
      • 1970-01-01
      • 2015-07-24
      • 1970-01-01
      • 2017-05-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多