0

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')
     })
4

1 に答える 1

1

問題は、それ.toString('base64')が使用されていることです。これ自体は問題ありませんが、バッファに戻す必要があります。

それを修正するにはnew Buffer( /* Password */ , 'base64')、次のように使用します。

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

このソリューションは、代わりbase64 hexに使用された場合にも機能します。

于 2016-12-03T10:00:07.373 に答える