Crypto-js para JavaScript (Node.js): guia completo com exemplos

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Crypto-js para JavaScript (Node.js): guia completo com exemplos

No desenvolvimento web moderno, a segurança dos dados é um aspecto crítico. Seja para armazenar senhas de usuários, transmitir informações confidenciais pela rede ou proteger arquivos contra acesso não autorizado — a criptografia está na base desses processos. A biblioteca Crypto-js oferece um conjunto poderoso e prático de algoritmos criptográficos para o ecossistema JavaScript, funcionando tanto no navegador quanto no ambiente Node.js.

Esta biblioteca implementa uma ampla gama de funções criptográficas padrão: criptografia simétrica (AES, DES, TripleDES), hash (MD5, SHA-1, SHA-256, SHA-512), cálculo de HMAC, além de geração de números aleatórios e manipulação de codificações (Base64, Hex, UTF-8). O Crypto-js não depende de módulos nativos do sistema operacional, tornando-o a escolha ideal para aplicações isomórficas (código que roda tanto no cliente quanto no servidor).

Neste artigo, vamos detalhar a instalação da biblioteca, os principais métodos com exemplos de código e também analisar um exemplo prático real de uso do Crypto-js para proteger dados em uma aplicação web. O conteúdo será útil tanto para desenvolvedores iniciantes quanto para profissionais experientes que desejam organizar seus conhecimentos sobre criptografia em JavaScript.

Instalação

Para instalar o Crypto-js em um projeto Node.js, execute o seguinte comando no terminal:

npm install crypto-js

Após a instalação, você pode importar a biblioteca no seu código:

// Para Node.js (CommonJS)
const CryptoJS = require("crypto-js");

// Para ES Modules (se usar "type": "module" no package.json)
import CryptoJS from "crypto-js";

Início rápido: exemplo mínimo funcional

Vamos começar com um exemplo simples — criptografar e descriptografar uma string usando o algoritmo AES:

const CryptoJS = require("crypto-js");

// Mensagem original
const message = "Olá, Crypto-js!";

// Chave secreta (deve ser segura em uma aplicação real)
const secretKey = "minha-chave-secreta-123";

// Criptografia
const ciphertext = CryptoJS.AES.encrypt(message, secretKey).toString();
console.log("Mensagem criptografada:", ciphertext);

// Descriptografia
const bytes = CryptoJS.AES.decrypt(ciphertext, secretKey);
const decryptedMessage = bytes.toString(CryptoJS.enc.Utf8);
console.log("Mensagem descriptografada:", decryptedMessage);

Este exemplo demonstra o ciclo básico da criptografia simétrica: transformamos o texto original em uma string criptografada (Base64) e depois recuperamos a mensagem original usando a mesma chave.

Principais métodos/funções/classes

Vamos explorar os recursos essenciais do Crypto-js. Para cada método, apresentamos a assinatura, uma breve descrição e um exemplo funcional.

1. CryptoJS.AES.encrypt() / CryptoJS.AES.decrypt()

Assinatura: CryptoJS.AES.encrypt(message, key, [options]) e CryptoJS.AES.decrypt(ciphertext, key, [options])

O que faz: Implementa criptografia e descriptografia simétrica usando o algoritmo AES (Advanced Encryption Standard). Suporta os modos ECB, CBC, CFB, OFB, CTR e tamanhos de chave de 128/192/256 bits.

const CryptoJS = require("crypto-js");

const message = "Dados secretos";
const key = "chavesupersecreta123";

// Criptografia especificando modo e IV (vetor de inicialização)
const iv = CryptoJS.lib.WordArray.random(16); // 16 bytes para AES-128
const encrypted = CryptoJS.AES.encrypt(message, key, {
    iv: iv,
    mode: CryptoJS.mode.CBC,
    padding: CryptoJS.pad.Pkcs7
}).toString();

console.log("Criptografado (CBC):", encrypted);

// Descriptografia
const decrypted = CryptoJS.AES.decrypt(encrypted, key, {
    iv: iv,
    mode: CryptoJS.mode.CBC,
    padding: CryptoJS.pad.Pkcs7
}).toString(CryptoJS.enc.Utf8);

console.log("Descriptografado:", decrypted);

Recommendations