gpt4 book ai didi

javascript - Node 和meteor服务器之间的bcrypt无效比较

转载 作者:太空宇宙 更新时间:2023-11-04 01:51:22 25 4
gpt4 key购买 nike

现在,我们正在尝试将用户密码哈希值从基本的 Node.js v0.10.48 应用程序迁移到 Meteor 服务器。我希望通过使用相同版本的 bcrypt 进行密码哈希可以迁移哈希本身,但到目前为止,比较不起作用。

我已确保两者都使用相同版本的 bcrypt,并且它们各自单独工作以比较它们自己创建的哈希值。但我无法将服务器 A 上创建的哈希值与使用相同密码在服务器 B 上创建的哈希值进行比较。

有办法实现我想要的吗?

编辑:添加一些示例。首先是在 Meteor 端运行:

这里的密码散列已经是 SHA256 散列(并且该部分在两个服务器之间排列得很好)。

> bcrypt.hashSync(SHA256 HASHED VALUE, 10)
'$2a$10$ky0cB/ezKnyLojOEVfkS9O9jn0V5Lo3BNMLIU2jTokHDcQDk33A0y'
> bcrypt.hashSync(SHA256 HASHED VALUE, 10)
'$2a$10$FdoTohtW/Djd1CN9MJJk6OmD7z60sBUaz56ez62.V/XH7r5s5yBtu'
> bcrypt.compareSync(SHA256 HASHED VALUE, '$2a$10$ky0cB/ezKnyLojOEVfkS9O9jn0V5Lo3BNMLIU2jTokHDcQDk33A0y')
true
> bcrypt.compareSync(SHA256 HASHED VALUE, '$2a$10$FdoTohtW/Djd1CN9MJJk6OmD7z60sBUaz56ez62.V/XH7r5s5yBtu')
true

在 Node 应用程序端,使用该密码我得到相同的 SHA256 哈希值,但在使用相同的盐对其运行 bcrypt 后(故意仅使用相同的值进行测试),我得到

$2a$10$ONspBE0StIMRH0GJOI3zO.uFey4yk7dFS85EycN.lnklr4QZk9T0a

使用相同的 SHA256 哈希运行与上述类似的测试会得到错误的结果。

最佳答案

有几件事需要通过 BCrypt 检查。

  1. 正在执行多少轮哈希,以及
  2. 正在使用哪个版本的算法。

这些都应该很容易检查,因为它们应该在存储的哈希的开头进行编码。

哈希密码密码可能看起来像

$2a$04$b.ATnW5JRfDNyKnKJ8SBO.QwtkLANvAc751Qn.N/wcxZmA/CIDFNK

其中$2a$04$显示哈希版本和轮数。

参见Wikipedia BCrypt Versioning History有关算法版本的更多详细信息。

如果版本相同,则哈希轮次可能不同,两者都应该是可配置的。

关于javascript - Node 和meteor服务器之间的bcrypt无效比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49535864/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com