3

我已经为此苦苦挣扎了一段时间,希望有人以前做过,并且可以帮助我。我向 Firebase 人员请求 scrypt 参数,以便将我们的用户身份验证从 Firebase 迁移到我们自己的服务器。现在我得到了这些参数,但我不知道它们应该如何映射到节点 scrypt 包(https://www.npmjs.com/package/scrypt)。Firebase 参数的格式如下:

hash_config: {
    algorithm: SCRYPT,
    base64_signer_key: asdf1234
    base64_salt_seperator: xxxx
    rounds: 123456
    mem_cost: 098765
}

不知何故,这些应该映射到 nodejs scrypt 参数上,但我找不到相似之处。任何帮助将非常感激!

4

3 回答 3

2

努力让 scrypt 正常工作。这里的文档https://github.com/firebase/scrypt#password-hashing看起来已经过时了。决定分享我们如何在团队中正确做事的知识。

工作指挥

scrypt {key} {salt} {saltSeparator} {rounds} {memcost} [-P]

不需要盐+分隔符连接和base64操作。

于 2018-05-04T07:58:07.590 回答
0

Firebase 使用自定义版本的 Scrypt 进行用户身份验证。我们从标准 scrypt 中获取派生密钥,然后 AES 使用“pepper”对其进行加密,并与散列密码一起存储。

我们刚刚开源了 Firebase 的版本,以便您可以进行自己的密码验证。在github.com/firebase/scrypt上查看

于 2018-02-15T21:37:43.290 回答
-1

我在迁移我的 firebase 用户时遇到了同样的问题。我也一直在与 firebase 技术支持来回交流——他们说很遗憾他们无法共享他们的哈希库。作为替代方案,我已将我的用户迁移到我的新数据库,并在有人登录时检查“盐”变量。​​如果盐存在,则查询 firebase,否则查询您自己的数据库。

于 2017-09-14T15:15:50.410 回答