我一直在努力解决这个问题已有一段时间了,希望有人之前已经做过这件事并且可以帮助我。我去Firebase的人请求scrypt params,以便将我们的用户身份验证从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 params,但我无法找到相似之处。任何帮助将不胜感激!
答案 0 :(得分:1)
为了让scrypt正常工作,我们苦苦挣扎。这里的文档https://github.com/firebase/scrypt#password-hashing看起来过时了。决定分享知识我们在团队中如何正确地做事。
工作指令
scrypt {key} {salt} {saltSeparator} {rounds} {memcost} [-P]
无需使用salt + separator连接和base64操作。
答案 1 :(得分:0)
Firebase使用Scrypt的自定义版本进行用户身份验证。我们从标准scrypt中获取派生密钥,然后AES使用" pepper"对其进行加密,并使用散列密码进行存储。
我们只是开源Firebase的版本,以便您可以进行自己的密码验证。请查看github.com/firebase/scrypt
答案 2 :(得分:-1)
我在迁移firebase用户时遇到了同样的问题。我也一直在使用firebase技术支持来回 - 他们说不幸的是他们无法共享他们的哈希库。作为替代方案,我已经将我的用户迁移到我的新数据库,并在有人登录时检查“salt”变量。如果salt存在,则查询firebase,否则查询自己的数据库。