Node.js密码哈希
我目前正在使用以下方法对密码进行哈希运算:Node.js密码哈希,node.js,security,cryptography,passwords,password-hash,Node.js,Security,Cryptography,Passwords,Password Hash,我目前正在使用以下方法对密码进行哈希运算: var pass_shasum = crypto.createHash('sha256').update(req.body.password).digest('hex'); 你能提出改进建议使项目更安全吗?我使用下面的代码来加密和散列密码 var bcrypt = require('bcrypt'); exports.cryptPassword = function(password, callback) { bcrypt.genSalt(1
var pass_shasum = crypto.createHash('sha256').update(req.body.password).digest('hex');
你能提出改进建议使项目更安全吗?我使用下面的代码来加密和散列密码
var bcrypt = require('bcrypt');
exports.cryptPassword = function(password, callback) {
bcrypt.genSalt(10, function(err, salt) {
if (err)
return callback(err);
bcrypt.hash(password, salt, function(err, hash) {
return callback(err, hash);
});
});
};
exports.comparePassword = function(plainPass, hashword, callback) {
bcrypt.compare(plainPass, hashword, function(err, isPasswordMatch) {
return err == null ?
callback(null, isPasswordMatch) :
callback(err);
});
};
bcrypt也可以同步调用。咖啡脚本示例:
bcrypt = require('bcrypt')
encryptionUtil =
encryptPassword: (password, salt) ->
salt ?= bcrypt.genSaltSync()
encryptedPassword = bcrypt.hashSync(password, salt)
{salt, encryptedPassword}
comparePassword: (password, salt, encryptedPasswordToCompareTo) ->
{encryptedPassword} = @encryptPassword(password, salt)
encryptedPassword == encryptedPasswordToCompareTo
module.exports = encryptionUtil
此外,还有用于节点的bcrypt nodejs模块
之前我使用了这里已经提到的bcrypt模块,但在win7 x64上遇到了问题。另一方面,bcrypt nodejs是bcrypt的纯JS实现,没有任何依赖关系。您可以使用bcrypt JS包加密密码
bcrypt.genSalt(10,函数(err,salt){
bcrypt.hash(“B4c0/\/”,salt,函数(err,hash){
//将哈希存储在密码数据库中。
});
});
//从密码数据库加载哈希。
bcrypt.compare(“B4c0/\/”,散列,函数(err,res){
//res==true
});
您可以访问以了解有关bcryptjs的更多信息。尝试使用Bcrypt,它使用哈希来保护密码
bcrypt.hash(req.body.password,salt,(err,encrypted)=>{
user.password=已加密
下一个()
})
其中salt是指定哈希强度的成本值。
登录时,使用bcrypt.compare方法比较密码:
bcrypt.compare(密码,user.password,(err,same)=>{
如果(相同){
req.session.userId=user.\u id
res.redirect(“/bloglist”)
}否则{
res.end('传递错误')
}
})
有关更多信息,请参阅本博客:Bcrypt不是一个坏选择,但是:
NUL
字节npm i bcrypt
npm i -D @types/bcrypt
例如:加密
const myEncryptPassword = await Encrypt.cryptPassword(password);
例:比较
const myBoolean = await Encrypt.comparePassword(password, passwordHash);
不加盐的SHA是不安全的。使用bcrypt。谢谢你的评论,我会接受你的检查。关于保护密码的好文章每个开发人员都应该阅读:返回后不要使用其他密码,这根本没有意义。干杯您是否可以添加一个指向您正在使用的bcrypt库的链接(如果可能的话是github)?谢谢。@Tadej那是很久以前的事了,但我想是:谢谢。我甚至没有查日期。对不起/有两个模块,为了这个目的,如果有人能告诉更多关于这两个模块的信息,那将是很好的。这将是很好的,但不再维护。
const myEncryptPassword = await Encrypt.cryptPassword(password);
const myBoolean = await Encrypt.comparePassword(password, passwordHash);