Что такое crypto-js?
crypto-js — это популярная библиотека для JavaScript и TypeScript, предоставляющая реализации стандартных криптографических алгоритмов. Она не требует Node.js и работает как в браузере, так и на сервере. В TypeScript-проектах crypto-js позволяет легко шифровать, дешифровать, хэшировать данные и генерировать HMAC-подписи без использования нативных криптографических API.
Зачем нужна криптография в TypeScript?
В веб-приложениях часто возникает необходимость защитить данные: пароли, токены, личные сообщения. TypeScript сам по себе не предоставляет криптографических функций, поэтому разработчики используют библиотеки. crypto-js покрывает большинство базовых потребностей: хэширование (SHA-256, MD5), симметричное шифрование (AES, DES, Triple DES) и HMAC. Это важно для безопасного хранения паролей, шифрования данных перед отправкой на сервер или для работы с JWT.
Установка
Установка через npm (или yarn):npm install crypto-jsnpm install @types/crypto-js (для TypeScript-типов)
Основные функции
- Хэширование: SHA-256, SHA-512, MD5, SHA-1, RIPEMD-160
- Симметричное шифрование: AES, DES, Triple DES, Rabbit, RC4, RC4Drop
- HMAC: HMAC-SHA256, HMAC-MD5 и другие
- Кодирование/декодирование: Base64, Hex, UTF-8, Latin1
Пример кода на TypeScript
import CryptoJS from 'crypto-js';
// Хэширование SHA-256
const hash = CryptoJS.SHA256('Hello, world!');
console.log(hash.toString()); // hex-строка
// Шифрование AES
const secretKey = 'my-secret-key';
const encrypted = CryptoJS.AES.encrypt('Secret data', secretKey).toString();
console.log('Зашифровано:', encrypted);
// Дешифрование
const decrypted = CryptoJS.AES.decrypt(encrypted, secretKey);
const plaintext = decrypted.toString(CryptoJS.enc.Utf8);
console.log('Расшифровано:', plaintext);
// HMAC-SHA256
const hmac = CryptoJS.HmacSHA256('message', 'key');
console.log('HMAC:', hmac.toString());
// MD5 (для контроля целостности)
const md5 = CryptoJS.MD5('data');
console.log('MD5:', md5.toString());
Когда использовать crypto-js?
- Шифрование данных на клиенте: например, перед отправкой на сервер (но помните, что ключ может быть скомпрометирован).
- Хэширование паролей на сервере: для хранения в базе данных (лучше использовать специализированные библиотеки, но crypto-js подходит для простых случаев).
- Проверка целостности сообщений: с помощью HMAC.
- Генерация токенов: например, для одноразовых ссылок.
- Работа с устаревшими системами: где требуется MD5 или DES.
Важно: crypto-js не рекомендуется для высоконагруженных или критичных по безопасности систем — используйте Web Crypto API или node:crypto. Но для типовых задач и небольших проектов она остаётся простым и удобным решением.