【发布时间】:2015-01-13 18:21:54
【问题描述】:
我在 php 中使用以下代码生成密码哈希和盐。
$salt = password_hash(uniqid(openssl_random_pseudo_bytes(16), TRUE), PASSWORD_BCRYPT);
password_hash($password . $salt, PASSWORD_BCRYPT);
我在NodeJS中使用bcrypt,想实现在NodeJS中验证密码。
我将哈希和密码 salt 保存在我的数据库中,并且可以在我的 NodeJS 应用程序中查询。
经过几次研究尝试,我在 SO 上找到了这篇文章: Verify password hash in nodejs which was generated in php 现在我将替换部分添加到我的代码中。
我的伪:
bcrypt.compare(password_from_input + salt_from_db.replace(/^\$2y(.+)$/i, '\$2a$1'), password_from_db.replace(/^\$2y(.+)$/i, '\$2a$1'), function(err, result) {
console.log(result);
});
我也想要反过来。所以在 NodeJS 中创建一个 salt 和 hash 并在 PHP 中进行验证。
希望大家能帮帮我。
【问题讨论】:
-
bcrypt.compare()的输入密码不需要加盐。 -
如果我在没有盐的情况下在 PHP 中对密码进行哈希处理,NodeJS 中的比较就可以了。
-
我不知道你在做什么。为什么要在 PHP 中散列随机盐?你为什么要加盐?
-
我不知何故读到如果我加盐会更安全。所以我不用加盐,对吧?
-
你需要一个盐,但
password_hash()会自动生成一个。