web-dev-qa-db-fra.com

Utilisation de SHA-256 avec NodeJS Crypto

J'essaie de hacher une variable dans NodeJS comme ceci:

var crypto = require('crypto');

var hash = crypto.createHash('sha256');

var code = 'bacon';

code = hash.update(code);
code = hash.digest(code);

console.log(code);

Mais il semble que j'ai mal compris les documents car le fichier console.log n'enregistre pas une version hachée de bacon mais juste quelques informations sur SlowBuffer.

Quelle est la bonne façon de procéder?

31
Cameron

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

hex: crypto.createHash('sha256').update('password').digest('hex');

15
MaximeF

Similaire aux réponses ci-dessus, mais cela montre comment effectuer plusieurs écritures; par exemple, si vous lisez ligne par ligne dans un fichier, puis ajoutez chaque ligne au calcul de hachage en tant qu'opération distincte.

Dans mon exemple, je coupe également les sauts de ligne/saute les lignes vides (facultatif):

const {createHash} = require('crypto');

// lines: array of strings
function computeSHA256(lines) {
  const hash = createHash('sha256');
  for (let i = 0; i < lines.length; i++) {
    const line = lines[i].trim(); // remove leading/trailing whitespace
    if (line === '') continue; // skip empty lines
    hash.write(line); // write a single line to the buffer
  }

  return hash.digest('base64'); // returns hash as string
}

J'utilise ce code pour m'assurer que les lignes générées d'un fichier ne sont pas modifiées manuellement par quelqu'un. Pour ce faire, j'écris les lignes, j'ajoute une ligne comme sha256:<hash> avec la somme sha265, puis, lors de la prochaine exécution, vérifiez que le hachage de ces lignes correspond à ladite somme sha265.

1
Blaskovicz

nodejs (8) ref

const crypto = require('crypto');
const hash = crypto.createHash('sha256');

hash.on('readable', () => {
    const data = hash.read();
    if (data) {
        console.log(data.toString('hex'));
        // Prints:
        //  6a2da20943931e9834fc12cfe5bb47bbd9ae43489a30726962b576f4e3993e50
    }
});

hash.write('some data to hash');
hash.end();
0
Mohamed.Abdo