我的 php 代码生成一个哈希password_hash
,我使用它存储在数据库中。下面是PHP代码:
$hash = password_hash($value, PASSWORD_BCRYPT, array('cost' => $cost));
我想根据 nodejs 中的这个哈希验证/检查密码。
我看到了很多节点模块(bcrypt、phpass、node-bcrypt),但它们都给了我错误。下面是在 php 中生成的示例哈希,我正在尝试在 nodejs 中进行验证。
var hash = '$2y$08$9TTThrthZhTOcoHELRjuN.3mJd2iKYIeNlV/CYJUWWRnDfRRw6fD2';
var bcrypt = require('bcrypt');
bcrypt.compare("secret", hash, function(err, res) {
console.log(res);
});
(这里的秘密是真正的密码)
我目前的解决方法是通过节点调用 php 脚本来验证(对于任何需要解决方法的人)
var exec = require('child_process').exec;
var cmd = 'php verify.php password encryped_pasword';
exec(cmd, function (error, stdout, stderr) {
// output is in stdout
console.log(stdout);
//If stdout has 1 it satisfies else false
});
这是一个hack,而不是这个问题的好答案。有没有办法在不使用这样的解决方法的情况下验证 nodejs 中的密码?