NodeJS: bcrypt против нативного шифрования - PullRequest
49 голосов
/ 05 августа 2011

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

bcrypt выглядит великолепно.

Ответы [ 3 ]

64 голосов
/ 05 августа 2011

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

17 голосов
/ 27 апреля 2014

В дополнение к ответу @ 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); 
1 голос
/ 23 марта 2018

Я бы использовал собственную криптобиблиотеку nodejs

Я думаю, что решение не должно основываться только на том, кто делает что-то лучше, это гораздо больше

Вы должны знать, почему node.jsвключил встроенный модуль для шифрования, хотя изначально он не был частью node.js, и многие библиотеки были популярны в репозитории npm, включая bcrypt

. Причина в том, что криптография является важным аспектом безопасности, используя внешний модульВ npm есть возможность внедрения вредоносного кода, что противоречит первоначальной цели безопасности

. Следовательно, для такой криптографической функции нужна доверенная библиотека, что побудило nodejs предоставить такую ​​библиотеку

Если вы думаете,криптографический метод не силен, лучше поднимать вопрос о nodejs примерно так же, чем слепо доверять внешней библиотеке

Все еще не верите мне?читать эту статью https://hackernoon.com/im-harvesting-credit-card-numbers-and-passwords-from-your-site-here-s-how-9a8cb347c5b5

...