Criptografía en TypeScript: Resumen de la biblioteca crypto-js

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

¿Qué es crypto-js?

crypto-js es una biblioteca popular para JavaScript y TypeScript que proporciona implementaciones de algoritmos criptográficos estándar. No requiere Node.js y funciona tanto en el navegador como en el servidor. En proyectos TypeScript, crypto-js permite cifrar, descifrar, aplicar hash a datos y generar firmas HMAC fácilmente sin utilizar APIs criptográficas nativas.

¿Por qué se necesita criptografía en TypeScript?

En las aplicaciones web, a menudo surge la necesidad de proteger datos: contraseñas, tokens, mensajes personales. TypeScript por sí mismo no proporciona funciones criptográficas, por lo que los desarrolladores utilizan bibliotecas. crypto-js cubre la mayoría de las necesidades básicas: hash (SHA-256, MD5), cifrado simétrico (AES, DES, Triple DES) y HMAC. Esto es importante para el almacenamiento seguro de contraseñas, el cifrado de datos antes de enviarlos al servidor o para trabajar con JWT.

Instalación

Instalación a través de npm (o yarn):
npm install crypto-js
npm install @types/crypto-js (para tipos de TypeScript)

Funciones principales

  • Hash: SHA-256, SHA-512, MD5, SHA-1, RIPEMD-160
  • Cifrado simétrico: AES, DES, Triple DES, Rabbit, RC4, RC4Drop
  • HMAC: HMAC-SHA256, HMAC-MD5 y otros
  • Codificación/Decodificación: Base64, Hex, UTF-8, Latin1

Ejemplo de código en TypeScript

import CryptoJS from 'crypto-js';

// Hash SHA-256const hash = CryptoJS.SHA256('Hello, world!');console.log(hash.toString()); // cadena hex

// Cifrado AESconst secretKey = 'my-secret-key';const encrypted = CryptoJS.AES.encrypt('Secret data', secretKey).toString();console.log('Cifrado:', encrypted);

// Descifradoconst decrypted = CryptoJS.AES.decrypt(encrypted, secretKey);const plaintext = decrypted.toString(CryptoJS.enc.Utf8);console.log('Descifrado:', plaintext);

// HMAC-SHA256const hmac = CryptoJS.HmacSHA256('message', 'key');console.log('HMAC:', hmac.toString());

// MD5 (para control de integridad)const md5 = CryptoJS.MD5('data');console.log('MD5:', md5.toString());

¿Cuándo usar crypto-js?

  • Cifrado de datos en el cliente: por ejemplo, antes de enviarlos al servidor (pero recuerde que la clave puede verse comprometida).
  • Hash de contraseñas en el servidor: para almacenarlas en la base de datos (es mejor usar bibliotecas especializadas, pero crypto-js es adecuado para casos simples).
  • Verificación de integridad de mensajes: mediante HMAC.
  • Generación de tokens: por ejemplo, para enlaces de un solo uso.
  • Trabajo con sistemas heredados: donde se requiere MD5 o DES.

Importante: no se recomienda crypto-js para sistemas de alta carga o críticos para la seguridad; utilice Web Crypto API o node:crypto. Pero para tareas típicas y proyectos pequeños, sigue siendo una solución simple y conveniente.

Recommendations