在 nodejs scrypt 包中使用 Firebase SCrypt 参数

Usage of Firebase SCrypt params in nodejs scrypt package

我已经为此苦苦挣扎了一段时间,希望之前有人做过这件事并且可以帮助我。我去找 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 参数,但我找不到相似之处。任何帮助将不胜感激!

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

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

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

查看

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

工作命令

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

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