O que é crypto-js?
crypto-js é uma biblioteca popular para JavaScript e TypeScript que fornece implementações de algoritmos criptográficos padrão. Ela não requer Node.js e funciona tanto no navegador quanto no servidor. Em projetos TypeScript, o crypto-js permite criptografar, descriptografar, fazer hash de dados e gerar assinaturas HMAC facilmente, sem usar APIs criptográficas nativas.
Por que a criptografia é necessária em TypeScript?
Em aplicações web, muitas vezes surge a necessidade de proteger dados: senhas, tokens, mensagens pessoais. O TypeScript por si só não fornece funções criptográficas, então os desenvolvedores usam bibliotecas. O crypto-js cobre a maioria das necessidades básicas: hash (SHA-256, MD5), criptografia simétrica (AES, DES, Triple DES) e HMAC. Isso é importante para armazenamento seguro de senhas, criptografia de dados antes de enviar ao servidor ou para trabalhar com JWT.
Instalação
Instalação via npm (ou yarn):npm install crypto-jsnpm install @types/crypto-js (para tipos TypeScript)
Funções principais
- Hash: SHA-256, SHA-512, MD5, SHA-1, RIPEMD-160
- Criptografia simétrica: AES, DES, Triple DES, Rabbit, RC4, RC4Drop
- HMAC: HMAC-SHA256, HMAC-MD5 e outros
- Codificação/decodificação: Base64, Hex, UTF-8, Latin1
Exemplo de código em TypeScript
import CryptoJS from 'crypto-js';
// Hash SHA-256const hash = CryptoJS.SHA256('Hello, world!');console.log(hash.toString()); // string hex
// Criptografia AESconst secretKey = 'my-secret-key';const encrypted = CryptoJS.AES.encrypt('Secret data', secretKey).toString();console.log('Criptografado:', encrypted);
// Descriptografiaconst decrypted = CryptoJS.AES.decrypt(encrypted, secretKey);const plaintext = decrypted.toString(CryptoJS.enc.Utf8);console.log('Descriptografado:', plaintext);
// HMAC-SHA256const hmac = CryptoJS.HmacSHA256('message', 'key');console.log('HMAC:', hmac.toString());
// MD5 (para verificação de integridade)const md5 = CryptoJS.MD5('data');console.log('MD5:', md5.toString());Quando usar crypto-js?
- Criptografia de dados no cliente: por exemplo, antes de enviar ao servidor (mas lembre-se de que a chave pode ser comprometida).
- Hash de senhas no servidor: para armazenamento em banco de dados (é melhor usar bibliotecas especializadas, mas o crypto-js é adequado para casos simples).
- Verificação de integridade de mensagens: usando HMAC.
- Geração de tokens: por exemplo, para links de uso único.
- Trabalho com sistemas legados: onde MD5 ou DES são necessários.
Importante: o crypto-js não é recomendado para sistemas de alta carga ou críticos para a segurança — use Web Crypto API ou node:crypto. Mas para tarefas típicas e projetos pequenos, continua sendo uma solução simples e conveniente.