【问题标题】:Firebase's scrypt version don't give the same hash as saveFirebase 的 scrypt 版本不提供与 save 相同的哈希值
【发布时间】:2019-01-06 19:28:11
【问题描述】:

我来这里是因为我正在处理这个repo

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

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

谢谢!

编辑:哈希函数(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 导出用户密码哈希。

【问题讨论】:

  • 我不确定问题出在哪里,但是为什么您使用命令行 scrypt 而不是许多执行相同操作的 npm 包之一? (例如npmjs.com/package/scryptsy
  • 您能否提供一个示例和您的代码进行哈希处理?
  • @apaatsio 因为firebase使用的是scrypt的修改版,并没有js实现它。所以我正在尝试创建它哈哈
  • @LazerBass 你可以在 repo 上看到它,但我编辑消息可能更容易

标签: firebase hash passwords firebase-authentication scrypt


【解决方案1】:

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

【讨论】:

  • 也许我必须先说一下,但我使用 admin sdk 从 firebase 导出用户,我没有以该用户身份登录
【解决方案2】:

我自己回答:问题出在我导出用户的方式上。我使用的是 JS Admin SDK 和 listUsers() 函数,但显然这并没有返回给你正确的密码哈希(也许是为了安全,我问我知道后会更新这篇文章)。

如果您想导出您的用户并使用firebase-scrypt 来验证他们的密码,请使用firebase-tools 和命令auth:export 导出您的用户

【讨论】:

    猜你喜欢
    • 2022-08-24
    • 2019-12-05
    • 2019-05-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-17
    • 1970-01-01
    相关资源
    最近更新 更多