Criptografia em TypeScript: criptografia e hash

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

Criptografia em TypeScript: criptografia e hash de dados



No desenvolvimento web moderno, a segurança dos dados é um aspecto criticamente importante. TypeScript, como uma extensão estritamente tipada sobre JavaScript, fornece ferramentas poderosas para implementar operações criptográficas. Neste artigo, abordaremos os principais algoritmos de criptografia e hash disponíveis em TypeScript e mostraremos como aplicá-los na prática.



Módulo nativo crypto e bibliotecas



Node.js fornece o módulo nativo crypto, que é totalmente compatível com TypeScript. Para aplicações de navegador, utiliza-se a Web Crypto API. Para tarefas mais complexas, recomenda-se a biblioteca crypto-js, que funciona tanto em Node.js quanto no navegador.



Instalação dos pacotes necessários:



npm install crypto-jsnpm install @types/crypto-js --save-dev


Criptografia simétrica AES



O algoritmo AES (Advanced Encryption Standard) é a cifra simétrica mais popular. Ele usa a mesma chave para criptografar e descriptografar dados.



Exemplo de implementação AES-256 em TypeScript:



import CryptoJS from 'crypto-js';

const SECRET_KEY = 'my-strong-secret-key-32chars';

function encryptAES(text: string): string { const encrypted = CryptoJS.AES.encrypt(text, SECRET_KEY); return encrypted.toString();}

function decryptAES(ciphertext: string): string { const decrypted = CryptoJS.AES.decrypt(ciphertext, SECRET_KEY); return decrypted.toString(CryptoJS.enc.Utf8);}

// Usoconst originalText = 'Dados secretos para proteção';const encrypted = encryptAES(originalText);console.log('Criptografado:', encrypted);

const decrypted = decryptAES(encrypted);console.log('Descriptografado:', decrypted);


Criptografia assimétrica RSA



RSA usa um par de chaves: pública (public) e privada (private). A chave pública criptografa os dados, e a chave privada os descriptografa. Isso é ideal para transmissão segura de dados.



Exemplo usando Node.js crypto:



import * as crypto from 'crypto';

function generateRSAKeys(): { publicKey: string; privateKey: string } { const { publicKey, privateKey } = crypto.generateKeyPairSync('rsa', { modulusLength: 2048, publicKeyEncoding: { type: 'spki', format: 'pem' }, privateKeyEncoding: { type: 'pkcs8', format: 'pem' } }); return { publicKey, privateKey };}

function encryptRSA(plainText: string, publicKey: string): string { const buffer = Buffer.from(plainText, 'utf-8'); const encrypted = crypto.publicEncrypt(publicKey, buffer); return encrypted.toString('base64');}

function decryptRSA(cipherText: string, privateKey: string): string { const buffer = Buffer.from(cipherText, 'base64'); const decrypted = crypto.privateDecrypt(privateKey, buffer); return decrypted.toString('utf-8');}

// Exemplo de usoconst keys = generateRSAKeys();const message = 'Mensagem confidencial';const encryptedRSA = encryptRSA(message, keys.publicKey);const decryptedRSA = decryptRSA(encryptedRSA, keys.privateKey);

console.log('Original:', message);console.log('Descriptografado:', decryptedRSA);


Hash de dados



Hash é uma transformação unidirecional de dados em uma string de comprimento fixo. Ao contrário da criptografia, o hash não pode ser revertido. Principais aplicações:



  • Armazenamento de senhas — em vez da senha, armazena-se seu hash
  • Verificação de integridade de dados — comparação de hashes de arquivos
  • Assinaturas digitais — confirmação de autoria


SHA-256



O algoritmo mais comum da família SHA-2:



import CryptoJS from 'crypto-js';

function hashSHA256(data: string): string { return CryptoJS.SHA256(data).toString();}

Recommendations