【问题标题】:Firebase auth:import doesn't import password SHA256Firebase auth:import 不导入密码 SHA256
【发布时间】:2018-05-25 02:42:27
【问题描述】:

我正在尝试使用 cli 命令 auth:import 将用户迁移到 firebase。

我的 passwordHash 是 PHP 哈希函数 hash('sha256', $password); 中没有加盐的 SHA256;

当我使用 auth:import 时,我的用户被添加到我的 firebase 用户中,但没有密码。

firebase auth:import user.json --hash-algo=SHA256 --rounds=64

对于密码哈希字符串,我尝试过使用/不使用 base64 和不同的 --rounds (0/1/64/80 ...)

这是我的 user.json

passwordHash 是 mypass
SHA256 ea71c25a7a602246b4c39824b855678894a96f43bb9b71319c39700a1e045222
Base64 ZWE3MWMyNWE3YTYwMjI0NmI0YzM5ODI0Yjg1NTY3ODg5NGE5NmY0M2JiOWI3MTMxOWMzOTcwMGExZTA0NTIyMg==

{
  "users": [
    {
      "localId": 1,
      "email" : "test@demo.com",
      "emailVerified": true,
      "passwordHash" : "ZWE3MWMyNWE3YTYwMjI0NmI0YzM5ODI0Yjg1NTY3ODg5NGE5NmY0M2JiOWI3MTMxOWMzOTcwMGExZTA0NTIyMg==",
      "displayName" : "test",
      "createdAt" : 1501452000000,
    }
  ]
}

我尝试使用 MD5 并且它正在工作,所以我想知道我在这里缺少什么。

谢谢,朱利安。

【问题讨论】:

  • @DoesData 感谢您的评论。我已经读过这篇文章,我没有收到相同的错误消息,但由于这个线程,我尝试了不同的轮次和 base64 字符串。
  • @Julien,我认为github.com/firebase/firebase-tools/issues/337 可以提供帮助。 ea71c25a7a602246b4c39824b855678894a96f43bb9b71319c39700a1e045222 实际上是 base16 编码的。 base64 字符串应该是6nHCWnpgIka0w5gkuFVniJSpb0O7m3ExnDlwCh4EUiI=。我验证它有效。
  • @wyhao31 谢谢,问题是我的 sha256 是 base16 编码的。有办法知道吗?无论如何,谢谢,如果您将评论作为答案发表,我会将其标记为答案。

标签: firebase firebase-authentication firebase-tools


【解决方案1】:

ea71c25a7a602246b4c39824b855678894a96f43bb9b71319c39700a1e04‌​5222 实际上是十六进制或 base16 编码的。所以base64字符串应该是6nHCWnpgIka0w5gkuFVniJSpb0O7m3ExnDlwCh4EUiI=


我怎么知道散列字符串是 base16 编码的?我认为您使用的库应该表明这一点。例如,如果我使用 NodeJS,下面的代码可以用来生成你得到的字符串(ea71c25a7a6...):

const crypto = require('crypto');
let hash = crypto.createHash('sha256');
hash.update('mypass').digest('hex');

我调用.digest('hex') 将字节转换为十六进制,所以我知道字符串是十六进制。如果在digest 函数中指定base64 而不是hex,则可以得到正确的base64 编码字符串。

【讨论】:

    猜你喜欢
    • 2019-05-04
    • 2017-05-19
    • 2021-02-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多