2016-12-03 67 views
0

我已经设置了Scrypt和哈希 - KDF - 工作正常。Scrypt在verifyKdf失败,只是“错误”

但是,每当我尝试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') 
    }) 

回答

1

的问题是,​​使用。虽然这本身不是问题,但您必须将其恢复到缓冲区。

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

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

用该溶液代替base64hex时将正常工作。