74 votes

NodeJS : bcrypt vs crypto native

Quelqu'un peut-il souligner les différences entre les deux et des exemples de situations où chacun est utilisé ?

bcrypt a l'air super.

95voto

Mike Scott Points 2763

Utilisez bcrypt lorsque vous souhaitez effectuer un hachage lent et coûteux en calcul - ce sera généralement pour les hachages où vous ne voulez vraiment pas qu'un attaquant puisse inverser le hachage, par exemple les mots de passe des utilisateurs. Utilisez la cryptographie native pour tout le reste.

25voto

Igor Parra Points 3858

Parallèlement à la réponse de @mike-scott, vous devriez préférer bcrypt pour les éléments liés aux mots de passe, mais vous pouvez toujours utiliser crypto pour un large éventail de tâches telles que créer des jetons aléatoires ou une somme de contrôle HMAC ou hachages SHA1/MD5 :

 var crypto = require('crypto'); 

// random tokens
var buf = crypto.randomBytes(16).toString('hex');
console.log('Random token of %d bytes in hexadecimal: %s', buf.length, buf);
var buf = crypto.randomBytes(16).toString('base64');
console.log('Random token of %d bytes in base 64: %s', buf.length, buf);

// a hashed message authentication checksum (HMAC) using a shared secret key
var string = 'My coffee please';
var key = 'Right away sir';

var encrypted = crypto.createHmac('sha1', key).update(string).digest('hex');
console.log('Encrypting "%s" using passphrase "%s": %s', string, key, encrypted);

// a MD5 hash
var hashmd5 = crypto.createHash('md5').update(string).digest('hex');
console.log('The MD5 hash of "%s" is %s', string, hashmd5); 

// a SHA1 hash
var hashsha1 = crypto.createHash('sha1').update(string).digest('hex');
console.log('The SHA1 hash of "%s" is %s', string, hashsha1); 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X