我的 PHP 代码使用 password_hash
生成哈希值并将其存储在数据库中。以下是 PHP 代码:
$hash = password_hash($value, PASSWORD_BCRYPT, array('cost' => $cost));
我想在nodejs中校验/检查密码是否与此哈希值匹配。
我看过很多Node模块(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);
});
(这里的“secret”是真正的密码)
我目前的解决办法是通过node调用一个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中验证密码而不使用类似于这样的变通方法的方式?