Firebase的scrypt版本没有提供与save相同的哈希值

时间:2018-07-30 14:04:00

标签: firebase hash passwords firebase-authentication scrypt

我在这里是因为我正在研究repo

当我比较来自firebase的哈希值和使用utility created by firebase为相同密码,使用相同盐和相同参数创建的哈希值时,它们是不同的。

有人对解决方案样本有任何想法吗?我完全被困住了,我不明白这里发生了什么^^'

谢谢!

EDIT:哈希函数(aslo here

  hash (password, salt) {
return new Promise((resolve, reject) => {
  exec(
    `${__dirname}/../scrypt/scrypt "${this.signerKey}" "${salt}" "${this.saltSeparator}" "${this.rounds}" "${this.memCost}" -P <<< "${password}"`,
    { shell: '/bin/bash' },
    (error, stdout) => error ? reject(error) : resolve(stdout),
  )
})

}

编辑2:我忘了这么说,但是我使用admin sdk导出了用户密码哈希。

2 个答案:

答案 0 :(得分:0)

Firebase文档指出“登录成功后,Firebase会使用内部Firebase哈希算法重新哈希用户密码”。如果您已经登录,则会看到一个唯一的哈希,因此我认为您不应该期望与项目的密钥完全匹配。

答案 1 :(得分:0)

我回答自己:问题出在我导出用户的方式上。我当时使用的是JS Admin SDK和listUsers()函数,但是显然这并没有为您返回正确的密码哈希(也许出于安全性考虑,我问我知道后会更新此帖子)。

如果要导出用户并使用firebase-scrypt验证密码,请使用firebase-tools和命令auth:export

导出用户。