Проверяет понимание встроенного модуля crypto в Node.js и его роли в обеспечении безопасности приложений.
Модуль crypto — это встроенный модуль Node.js, предоставляющий криптографические функции на базе библиотеки OpenSSL. Он позволяет выполнять хеширование, симметричное и асимметричное шифрование, генерацию случайных значений, создание и проверку цифровых подписей, а также работу с HMAC.
createHash (SHA-256, MD5 и др.).createCipheriv и асимметричное (RSA) через publicEncrypt.randomBytes и randomUUID для генерации безопасных значений.sign и verify для цифровых подписей.const crypto = require('crypto');
// Создаём соль и хеш пароля
const salt = crypto.randomBytes(16).toString('hex');
const hash = crypto
.createHash('sha256')
.update('myPassword' + salt)
.digest('hex');
console.log({ salt, hash });
// Проверка пароля
const check = crypto
.createHash('sha256')
.update('myPassword' + salt)
.digest('hex');
console.log(check === hash); // trueconst crypto = require('crypto');
const key = crypto.randomBytes(32); // 256 бит
const iv = crypto.randomBytes(16);
const cipher = crypto.createCipheriv('aes-256-cbc', key, iv);
let encrypted = cipher.update('secret data', 'utf8', 'hex');
encrypted += cipher.final('hex');
const decipher = crypto.createDecipheriv('aes-256-cbc', key, iv);
let decrypted = decipher.update(encrypted, 'hex', 'utf8');
decrypted += decipher.final('utf8');
console.log(decrypted); // secret datascrypt или pbkdf2).Модуль crypto стоит применять всегда, когда требуется работа с чувствительными данными: аутентификация, токены, шифрование. Для паролей предпочтительнее использовать crypto.scrypt или bcrypt, так как они устойчивы к брутфорсу.
Уровень
Рейтинг:
4
Сложность:
4
Навыки
JavaScript
Node.js
Ключевые слова
Подпишись на Node.js Developer в телеграм