我来这里是因为我正在处理这个repo。
当我比较firebase的哈希和我使用firebase为相同密码创建的实用程序使用相同的salt和相同的参数创建的哈希时,它们是不一样的。
有人对溶液样本有什么想法吗?我完全被卡住了,我不明白这里发生了什么^^'
Thx!
EDIT:散列函数(这里也有(
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导出用户密码哈希。
Firebase文档指出,"成功登录后,Firebase会使用内部Firebase哈希算法重新哈希用户密码"。如果你已经登录,你会看到一个唯一的哈希,所以我认为你不应该期望与你的项目密钥完全匹配。
我自己回答:问题来自于我导出用户的方式。我使用的是JS Admin SDK和listUsers()
函数,但显然这并没有给你返回正确的密码哈希(也许是为了安全起见,我问我会在知道后更新这篇文章(。
如果要导出用户并使用firebase-scrypt
验证其密码,请使用firebase-tools
和命令auth:export
导出用户