What is crypto-js?
crypto-js is a popular library for JavaScript and TypeScript that provides implementations of standard cryptographic algorithms. It does not require Node.js and works both in the browser and on the server. In TypeScript projects, crypto-js allows you to easily encrypt, decrypt, hash data, and generate HMAC signatures without using native cryptographic APIs.
Why is cryptography needed in TypeScript?
In web applications, there is often a need to protect data: passwords, tokens, personal messages. TypeScript itself does not provide cryptographic functions, so developers use libraries. crypto-js covers most basic needs: hashing (SHA-256, MD5), symmetric encryption (AES, DES, Triple DES), and HMAC. This is important for secure password storage, encrypting data before sending it to the server, or for working with JWT.
Installation
Installation via npm (or yarn):npm install crypto-jsnpm install @types/crypto-js (for TypeScript types)
Main Features
- Hashing: SHA-256, SHA-512, MD5, SHA-1, RIPEMD-160
- Symmetric Encryption: AES, DES, Triple DES, Rabbit, RC4, RC4Drop
- HMAC: HMAC-SHA256, HMAC-MD5 and others
- Encoding/Decoding: Base64, Hex, UTF-8, Latin1
TypeScript Code Example
import CryptoJS from 'crypto-js';
// SHA-256 Hashingconst hash = CryptoJS.SHA256('Hello, world!');console.log(hash.toString()); // hex string
// AES Encryptionconst secretKey = 'my-secret-key';const encrypted = CryptoJS.AES.encrypt('Secret data', secretKey).toString();console.log('Encrypted:', encrypted);
// Decryptionconst decrypted = CryptoJS.AES.decrypt(encrypted, secretKey);const plaintext = decrypted.toString(CryptoJS.enc.Utf8);console.log('Decrypted:', plaintext);
// HMAC-SHA256const hmac = CryptoJS.HmacSHA256('message', 'key');console.log('HMAC:', hmac.toString());
// MD5 (for integrity checks)const md5 = CryptoJS.MD5('data');console.log('MD5:', md5.toString());When to use crypto-js?
- Client-side data encryption: for example, before sending to the server (but remember that the key can be compromised).
- Server-side password hashing: for storage in a database (it is better to use specialized libraries, but crypto-js is suitable for simple cases).
- Message integrity verification: using HMAC.
- Token generation: for example, for one-time links.
- Working with legacy systems: where MD5 or DES is required.
Important: crypto-js is not recommended for high-load or security-critical systems — use the Web Crypto API or node:crypto. But for typical tasks and small projects, it remains a simple and convenient solution.