Подтвердить что ты не робот

NodeJS: bcrypt vs native crypto

Может ли кто-нибудь указать различия между двумя примерами ситуаций, в которых они используются?

bcrypt отлично выглядит.

4b9b3361

Ответ 1

Используйте bcrypt, где вы хотите делать медленное и дорогостоящее хэширование, основанное на вычислениях, - это, как правило, для хэшей, где вы действительно не хотите, чтобы злоумышленник мог изменить хэш, например. паролей пользователей. Используйте собственный криптографический код для всего остального.

Ответ 2

В сочетании с ответом @mike-scott вам следует предпочесть bcrypt для связанных с паролями вещей, но вы можете использовать crypto для широкого круга задач, таких как создание случайных токенов или контрольной суммы HMAC или хэшей 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);