我在这里是因为我正在研究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导出了用户密码哈希。
答案 0 :(得分:0)
Firebase文档指出“登录成功后,Firebase会使用内部Firebase哈希算法重新哈希用户密码”。如果您已经登录,则会看到一个唯一的哈希,因此我认为您不应该期望与项目的密钥完全匹配。
答案 1 :(得分:0)
我回答自己:问题出在我导出用户的方式上。我当时使用的是JS Admin SDK和listUsers()
函数,但是显然这并没有为您返回正确的密码哈希(也许出于安全性考虑,我问我知道后会更新此帖子)。
如果要导出用户并使用firebase-scrypt
验证密码,请使用firebase-tools
和命令auth:export