Node.js 在nodejs-SCrypt包中使用Firebase-SCrypt参数

Node.js 在nodejs-SCrypt包中使用Firebase-SCrypt参数,node.js,firebase,hash,firebase-authentication,scrypt,Node.js,Firebase,Hash,Firebase Authentication,Scrypt,我已经为此挣扎了一段时间了,希望有人曾经这样做过,并能在我的道路上帮助我。我去找Firebase人员请求scrypt参数,以便将我们的用户身份验证从Firebase迁移到我们自己的服务器。现在我得到了这些参数,但我不知道它们应该如何映射到节点scrypt包()。Firebase参数的格式如下: hash_config: { algorithm: SCRYPT, base64_signer_key: asdf1234 base64_salt_seperator: xxxx

我已经为此挣扎了一段时间了,希望有人曾经这样做过,并能在我的道路上帮助我。我去找Firebase人员请求scrypt参数,以便将我们的用户身份验证从Firebase迁移到我们自己的服务器。现在我得到了这些参数,但我不知道它们应该如何映射到节点scrypt包()。Firebase参数的格式如下:

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

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

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

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


我们只是开源Firebase的版本,以便您可以自己进行密码验证。在

上查看它,让scrypt正常工作非常困难。这里的文档看起来已经过时了。决定在团队中分享我们如何正确做事的知识

工作指令

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

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

我们已经更改了此策略-您可以查看github上的哈希库:github.com/firebase/scrypthey@Kiana,您能解释一下如何使此算法与nodejs一起工作吗?我在nodejs中找不到firebase/scrypt的任何用法。我找不到一种方法来使用提供密码哈希参数firebase的标准scrypt包。我也不知道斯克里普特用的是什么盐,AES用的是什么秘密。任何具有适当数据的精确nodejs示例都将受到赞赏。谢谢抱歉,我们没有任何nodejs版本的代码。AES秘密位于firebase控制台()中的密码散列参数中。当您执行firebase auth:export时,scrypt salt将与密码一起导出。