2016-12-03 7 views
0

Scrypt를 설정하고 KDF 인 해시가 정상적으로 작동합니다.그냥 "오류"와 함께 verifyKdf에서 Scrypt가 실패합니다

그러나 내가 시도 할 때마다 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 간단한 "오류"를 포함) 문제 .toString('base64') 사용된다는 것이다

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')을 사용하고 같을 것이다 해결하려면 대신 base64hex가 사용 된 경우

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

이 솔루션은 잘 작동.