web-dev-qa-db-fra.com

NodeJS - Cryptage du mot de passe SHA256

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

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

Si vous souhaitez générer des hachages sha256, Vous devrez alors 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 hachage 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);
};
77
hexacyanide