首页 文章

Firebase身份验证:导入不会导入密码SHA256

提问于
浏览
0

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

我的passwordHash是一个没有来自PHP哈希函数哈希的盐的SHA256('sha256',$ password);

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

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

对于passwordHash字符串,我尝试使用/不使用base64和diffrents --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并且它正在工作,所以我想知道我在这里失踪了什么 .

谢谢你,朱利安 .

1 回答

  • 0

    ea71c25a7a602246b4c39824b855678894a96f43bb9b71319c39700a1e045222 实际上是十六进制或base16编码 . 所以base64字符串应该是 6nHCWnpgIka0w5gkuFVniJSpb0O7m3ExnDlwCh4EUiI= .


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

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

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

相关问题