gpt4 book ai didi

node.js - 为什么 node.bcrypt.js 无法识别我的密码?

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

我正在考虑使用 bcrypt (npm install bcrypt) 来哈希我的 Node.js 应用程序的密码。我决定制作两个小脚本作为概念证明,基本上遵循 node.bcrypt.js 的说明。 :

createHash.js

var bcrypt = require('bcrypt'),
password = process.argv[2];

bcrypt.hash(password, 10, function(err, hash) {
console.log(hash);
});

checkPassword.js

var bcrypt = require('bcrypt'),
hash = process.argv[2],
password = process.argv[3];

bcrypt.compare(password, hash, function(err, res) {
console.log(res);
});

尝试它们看起来像这样:

$ node createHash.js bacon
$2a$10$Iy8XG2C5.OMysi2S9UK2fu3omruWE4nXnhSKRD2fmNnImEAqayJs2
$ node checkPassword.js $2a$10$Iy8XG2C5.OMysi2S9UK2fu3omruWE4nXnhSKRD2fmNnImEAqayJs2 bacon
false

由于我在两次调用中使用了相同的密码 (bacon),因此我预计第二次调用会返回 true,而不是 false。谁能解释为什么这不符合预期?

最佳答案

这是因为某些 shell 将散列中的 $ 解释为引用变量的特殊字符。

要解决这个问题,请用引号引起来的哈希值:

bash-3.2$ node createHash.js bacon
$2a$10$i.RiIPW5wSSooTHJI6Sl6usKdx94uAmSUZ8489.os9OKLWGcuO6tm
bash-3.2$ node checkPassword.js $2a$10$i.RiIPW5wSSooTHJI6Sl6usKdx94uAmSUZ8489.os9OKLWGcuO6tm bacon
false
bash-3.2$ node checkPassword.js '$2a$10$i.RiIPW5wSSooTHJI6Sl6usKdx94uAmSUZ8489.os9OKLWGcuO6tm' bacon
true

关于node.js - 为什么 node.bcrypt.js 无法识别我的密码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22700692/

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