Мой 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);
});
(Здесь секрет - реальный пароль)
Моим текущим обходным решением является вызов php script через node для проверки (для тех, кому необходим обходной путь)
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
});
Это взлом и не хороший ответ на эту проблему. Есть ли способ проверить пароль в nodejs без использования обходного пути, подобного этому?