密码加密的Node.js(Node.js encryption of passwords)

2019-08-04 14:44发布

我目前使用下面的加密密码:

var pass_shasum = crypto.createHash('sha256').update(req.body.password).digest('hex');

能否请您提出改进意见,使项目更安全吗?

Answer 1:

我用的是follwing代码盐和哈希密码。

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);
   });
};


Answer 2:

bcrypt也可以同步调用。 样品的CoffeeScript:

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


Answer 3:

人们也为节点bcrypt-模块的NodeJS。 https://github.com/shaneGirish/bcrypt-nodejs 。

以前我用已经在这里bcrypt模块提及,但陷入对Win7的X64的问题。 在另一方面bcrypt - 是的NodeJS纯JS实现bcrypt,并在所有没有任何相关性。



Answer 4:

您可以使用bcrypt-JS包加密的密码。

  1. 尝试NPM我bcryptjs
  2. VAR bcrypt =要求( 'bcryptjs')在顶部。
  3. 哈希密码:

    bcrypt.genSalt(10, function(err, salt) { bcrypt.hash("B4c0/\/", salt, function(err, hash) { // Store hash in your password DB. }); });

  4. 要检查您的密码,
    // Load hash from your password DB. bcrypt.compare("B4c0/\/", hash, function(err, res) { // res === true });

您可以访问https://www.npmjs.com/package/bcryptjs对bcryptjs更多信息。



文章来源: Node.js encryption of passwords