Криптография в TypeScript: Обзор библиотеки crypto-js

Онлайн-тренажер Python для начинающих

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

Начать курс

Что такое 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-js
npm 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. Но для типовых задач и небольших проектов она остаётся простым и удобным решением.

Рекомендаций