NODE.JS-如何使用bcrypt检查Laravel哈希密码?

时间:2019-06-18 20:28:29

标签: node.js laravel hash bcrypt

我正在开发一个Node.js应用程序,该应用程序需要使用来自Laravel应用程序的相同数据库信息进行登录。

我已经读过BCrypt,并试图将其与数据库中存储的Laravel生成的哈希密码进行比较。

因此,根据BCrypt的文档,我需要执行以下操作:

var salt = bcrypt.genSaltSync(saltRounds);
var hash = bcrypt.hashSync(myPlaintextPassword, salt);

但是我不知道如何使用Laravel中完全相同的盐来哈希密码。我需要使用 APP_KEY 来做到这一点吗?

2 个答案:

答案 0 :(得分:1)

据我了解,盐作为哈希的一部分存储。

所以为什么不将纯文本与存储的哈希值进行比较。

尝试以下操作(来自bcrypt文档):

bcrypt.compare(myPlaintextPassword, hash, function(err, res) {
    // res == true
});

hashLaravel数据库中的用户密码哈希值。

例如:

var pass_hash = '$2y$12$Z3Dk1YAzNsdXxq8EKNQxluqGglI6dvncfJxDj0mZHh7zceX2XoX/W'
var pass_string = '1234'
bcrypt.compare(pass_string, pass_hash,(err,valid)=>{
 if(valid){console.log("valid password match")}
 else{console.log("wrong credentials")}
});

答案 1 :(得分:0)

我喜欢答案here。比我想象的要容易。

var hash = '$2y$08$9TTThrthZhTOcoHELRjuN.3mJd2iKYIeNlV/CYJUWWRnDfRRw6fD2';
var bcrypt = require('bcrypt');
hash = hash.replace(/^\$2y(.+)$/i, '$2a$1');
bcrypt.compare("secret", hash, function(err, res) {
    console.log(res);
});