$2y bcrypt hashes in Node.js(Node.js 中的 $2y bcrypt 哈希)
问题描述
我正在处理带有 $2y
哈希的旧数据库.我对此进行了一些研究,还偶然发现了 堆栈溢出$2a
和 $2y
的区别.
I'm dealing with an old database with $2y
hashes. I've dug into this a bit, also stumbled on the stack overflow on the difference between $2a
and $2y
.
我查看了 bcrypt
的节点模块这似乎只生成和比较 $2a
哈希.
- https://github.com/ncb000gt/node.bcrypt.js/issues/175
- https://github.com/ncb000gt/node.bcrypt.js/issues/349
- https://github.com/ncb000gt/node.bcrypt.js/issues/213
我找到了一个生成 $2y
哈希值的网站,因此我可以使用 bcrypt
对其进行测试.
I found a website that generates $2y
hashes so I can test them with bcrypt
.
- http://aspirine.org/htpasswd_en.html
这是字符串 helloworld
的 $2y
散列示例.
Here's an example of a $2y
hash of the string helloworld
.
似乎模块无法验证 $2y
哈希值.
Seems the module has no way of validating $2y
hashes.
这是我的测试.
结果如下:
我对如何比较节点中的 $2y
哈希感到困惑.
I'm stumped on how I can compare $2y
hashes in node.
另一个 Stack Overflow 问题/答案说您可以更改 $2y
到 $2a
但这对我来说仍然失败.
There's another Stack Overflow question / answer that says you can just change the $2y
to $2a
but that still fails for me.
更新!
我错误地使用了 生成器,因为它是一个 .htpasswd
密码生成器,您必须以这种格式输入用户名和密码.
I was using the generator incorrectly because it's a .htpasswd
password generator you have to put in the username and password in this format.
并且输出对应这里:
之前我只是放了
我假设散列一个空字符串.
Which I'm assuming hashed a empty string.
通过这些更改,将 y
更改为 a
可以在 bcrypt
中使用.twin-bcrypt
就可以了.
With these changes changing the y
to an a
works in bcrypt
. And twin-bcrypt
just works.
推荐答案
- 使用
bcrypt
时,将y
更改为a
. - 当使用
twin-bcrypt
时,哈希就可以工作. - When using
bcrypt
change they
to ana
. - When using
twin-bcrypt
the hash just works.
使用 http://aspirine.org/htpasswd_en.html 时,请确保提供用户名和密码.
When using http://aspirine.org/htpasswd_en.html make sure that you provide a username and password.
然后:
这是一个使用 bcrypt
和 twin-bcrypt
的工作示例.
Here's a working example with both bcrypt
and twin-bcrypt
.
输出:
这篇关于Node.js 中的 $2y bcrypt 哈希的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!