Firebase auth:import 不导入密码 SHA256
Firebase auth:import doesn't import password SHA256
我正在尝试使用 cli 命令将用户迁移到 firebase auth:import。
我的密码哈希是 PHP 哈希函数 hash('sha256', $password);
中没有加盐的 SHA256
当我使用 auth:import 我的用户被添加到我的 firebase 用户但没有密码。
firebase auth:import user.json --hash-algo=SHA256 --rounds=64
对于 passwordHash 字符串,我已经尝试 with/without 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 并且它可以正常工作,所以我想知道我在这里遗漏了什么。
谢谢,朱利安。
ea71c25a7a602246b4c39824b855678894a96f43bb9b71319c39700a1e045222
实际上是十六进制,或 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 编码字符串。
我正在尝试使用 cli 命令将用户迁移到 firebase auth:import。
我的密码哈希是 PHP 哈希函数 hash('sha256', $password);
中没有加盐的 SHA256当我使用 auth:import 我的用户被添加到我的 firebase 用户但没有密码。
firebase auth:import user.json --hash-algo=SHA256 --rounds=64
对于 passwordHash 字符串,我已经尝试 with/without 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 并且它可以正常工作,所以我想知道我在这里遗漏了什么。
谢谢,朱利安。
ea71c25a7a602246b4c39824b855678894a96f43bb9b71319c39700a1e045222
实际上是十六进制,或 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 编码字符串。