Cryptage de mot de passe NodeJS-SHA256

J'apprends actuellement sur le cryptage et la sécurité des mots de passe dans NodeJS. Je travaille avec un exemple actuel qui utilise actuellement PBKDF2, je voudrais basculer cela pour utiliser SHA256 à la place. Est-ce possible et / ou logique? Comment pourrais-je aller à ce sujet?

var crypto = require('crypto');

var len = 128;

var iterations = 13000;

module.exports = function (pwd, salt, fn) {
  if (3 == arguments.length) {
    crypto.pbkdf2(pwd, salt, iterations, len, fn);
  } else {
    fn = salt;
    crypto.randomBytes(len, function(err, salt){
      if (err) return fn(err);
      salt = salt.toString('base64');
      crypto.pbkdf2(pwd, salt, iterations, len, function(err, hash){
        if (err) return fn(err);
        fn(null, salt, hash);
      });
    });
  }
};
29
demandé sur Dustin 2013-10-08 03:06:38

1 réponses

Si vous voulez générer des hachages sha256, vous devrez supprimer les itérations et la propriété length car celles-ci sont spécifiques à pbkdf2. Vous utiliseriez alors crypto.createHash() qui utilise OpenSSL pour générer des hachages. Cela étant dit, les types de hachages que vous pouvez générer dépendent de la version D'OpenSSL que vous avez installée.

var crypto = require('crypto');
var hash = crypto.createHash('sha256').update(pwd).digest('base64');

Votre implémentation spécifique pourrait ressembler à ceci:

var crypto = require('crypto');
module.exports = function(pwd, fn) {
  var hash = crypto.createHash('sha256').update(pwd).digest('base64');
  fn(null, hash);
};
56
répondu hexacyanide 2013-10-08 00:30:43