NODE.JS - 如何使用 bcrypt 检查 Laravel 散列密码?
NODE.JS - How to check a Laravel hashed password with bcrypt?
我正在开发一个 Node.js
应用程序,它需要使用来自 Laravel
应用程序的相同数据库信息登录。
我读过有关 BCrypt
的文章,并尝试使用它来比较它生成的散列密码与存储在数据库中的 Laravel
密码。
所以,根据 BCrypt
的文档,我需要做这样的事情:
var salt = bcrypt.genSaltSync(saltRounds);
var hash = bcrypt.hashSync(myPlaintextPassword, salt);
但我不知道如何使用 Laravel
中完全相同的盐来散列我的密码。我需要使用 APP_KEY 来执行此操作吗?
据我了解,盐是作为散列的一部分存储的。
那么为什么不直接将纯文本与存储的哈希进行比较呢。
尝试以下操作(来自 bcrypt 文档):
bcrypt.compare(myPlaintextPassword, hash, function(err, res) {
// res == true
});
hash
将是 Laravel
数据库中的用户密码哈希值。
例如:
var pass_hash = 'y$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")}
});
我找到了答案here。这比我想象的要容易得多。
var hash = 'yTTThrthZhTOcoHELRjuN.3mJd2iKYIeNlV/CYJUWWRnDfRRw6fD2';
var bcrypt = require('bcrypt');
hash = hash.replace(/^$2y(.+)$/i, 'a');
bcrypt.compare("secret", hash, function(err, res) {
console.log(res);
});
我正在开发一个 Node.js
应用程序,它需要使用来自 Laravel
应用程序的相同数据库信息登录。
我读过有关 BCrypt
的文章,并尝试使用它来比较它生成的散列密码与存储在数据库中的 Laravel
密码。
所以,根据 BCrypt
的文档,我需要做这样的事情:
var salt = bcrypt.genSaltSync(saltRounds);
var hash = bcrypt.hashSync(myPlaintextPassword, salt);
但我不知道如何使用 Laravel
中完全相同的盐来散列我的密码。我需要使用 APP_KEY 来执行此操作吗?
据我了解,盐是作为散列的一部分存储的。
那么为什么不直接将纯文本与存储的哈希进行比较呢。
尝试以下操作(来自 bcrypt 文档):
bcrypt.compare(myPlaintextPassword, hash, function(err, res) {
// res == true
});
hash
将是 Laravel
数据库中的用户密码哈希值。
例如:
var pass_hash = 'y$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")}
});
我找到了答案here。这比我想象的要容易得多。
var hash = 'yTTThrthZhTOcoHELRjuN.3mJd2iKYIeNlV/CYJUWWRnDfRRw6fD2';
var bcrypt = require('bcrypt');
hash = hash.replace(/^$2y(.+)$/i, 'a');
bcrypt.compare("secret", hash, function(err, res) {
console.log(res);
});