Czy ktoś może wskazać różnice między tymi dwoma przykładami i sytuacjami, w których używają każdego?NodeJS: bcrypt kontra natywna kryptografia
bcrypt wygląda świetnie.
Czy ktoś może wskazać różnice między tymi dwoma przykładami i sytuacjami, w których używają każdego?NodeJS: bcrypt kontra natywna kryptografia
bcrypt wygląda świetnie.
Użyj bcrypt, gdzie chcesz robić powolne i kosztowne pod względem obliczeniowym hashing - zwykle będzie to dotyczyło skrótów, w których naprawdę nie chcesz, aby atakujący mógł odwrócić hash, np. hasła użytkowników. Użyj natywnego krypto na wszystko inne.
W towarzysz z @ mike-Scott odpowiedź, powinniśmy wolisz bcrypt
dla haseł związanych z rzeczy, ale nadal można używać crypto
dla szerokiego zakresu zadań, takich jak tworzenie losowych znaków lub sumę kontrolną HMAC lub 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);
Czy chciałbyś dokładniej wyjaśnić, dlaczego bcrypt jest lepszy/silniejszy? Zakładam, że używa silniejszego/dłuższego hasha? Czy używa innego algorytmu? Jeśli tak podano dwa podobne hasła, jeden zaszyfrował z natywnym kryptografem, a drugi z bcrypt, jaki jest szacowany koszt w czasie odwrócenia hasza? –
Bcrypt używa algorytmu Blowfish, który ma kosztowną kosztowo fazę konfiguracji klucza. Następnie modyfikuje go w celu umożliwienia wielokrotnego konfigurowania konfiguracji klucza - zwykle około 4 096 obecnie, ale można go zwiększyć, gdy sprzęt staje się potężniejszy. Różnica w trudności wstecznego mieszania między bcrypt a zwykłym hashem zależy więc od konfiguracji bcrypt. –