Gerando Hashes Criptográficos e UUIDs v4 Nativamente no Node.js

Gerando Hashes Criptográficos e UUIDs v4 Nativamente no Node.js

Gerar identificadores únicos e calcular hashes de segurança são tarefas essenciais na autenticação, verificação de integridade de arquivos e criação de chaves primárias. Utilizando o módulo nativo node:crypto, você realiza essas operações criptográficas sem a necessidade de instalar dependências externas como uuid ou bcrypt.

JavaScript

import { createHash, randomUUID } from 'node:crypto';

/**
 * Gera um hash criptográfico a partir de um texto informado
 * @param {string} texto - Conteúdo a ser convertido em hash
 * @param {string} algoritmo - Algoritmo criptográfico ('sha256', 'md5', etc.)
 * @returns {string} Hash gerado em formato hexadecimal
 */
function gerarHash(texto, algoritmo = 'sha256') {
  return createHash(algoritmo)
    .update(texto) // Adiciona os dados para o hash
    .digest('hex'); // Finaliza o processo e retorna em hexadecimal
}

// 1. Exemplo de geração de UUID v4 (Identificador Único Universal)
const idUnico = randomUUID();
console.log('UUID v4 Gerado:', idUnico);

// 2. Exemplo de geração de Hash SHA-256 (Recomendado para integridade/chaves)
const senhaTextoPuro = 'MinhaSenhaSegura123';
const hashSHA256 = gerarHash(senhaTextoPuro, 'sha256');
console.log('Hash SHA-256:', hashSHA256);

// 3. Exemplo de geração de Hash MD5 (Legado/Checksum de arquivos baixos)
const hashMD5 = gerarHash('ConteudoParaCheckSum', 'md5');
console.log('Hash MD5:', hashMD5);

Pontos-chave

  • Desempenho Nativo: O módulo node:crypto é construído sobre a biblioteca OpenSSL, garantindo alta performance e segurança sem adicionar vulnerabilidades de pacotes de terceiros.
  • randomUUID() Altamente Seguro: A função randomUUID() gera UUIDs versão 4 criptograficamente seguros utilizando o gerador de números pseudoaleatórios do sistema operacional.
  • Incompatibilidade do MD5 para Senhas: O algoritmo MD5 é vulnerável a ataques de colisão e não deve ser utilizado para armazenar senhas; prefira SHA-256/SHA-512 ou algoritmos com salt apropriados (como scrypt ou pbkdf2, disponíveis no próprio módulo crypto).
  • Codificação de Saída (digest): O método .digest() aceita formatos como 'hex', 'base64' ou 'binary'. O formato 'hex' é o mais comum para exibição e armazenamento em banco de dados.

Thales de Oliveira Gomes

Thales de Oliveira Gomes é gestor de Tecnologia da Informação, especialista em infraestrutura de redes, computação em nuvem e operações de TI hospitalar, com mais de 18 anos de experiência na área. Graduado em Gestão de TI e pós-graduado em Engenharia de Redes e Telecomunicações, Cloud Computing, Redes de Computadores e Gestão Hospitalar, construiu uma trajetória sólida liderando projetos de alta complexidade, como a implementação e migração para nuvem de sistemas ERP de grande porte. Sua atuação no setor o levou a ser indicado ao prêmio IT Leaders Brasil na categoria Rising Leaders. Além da carreira corporativa e da paixão por tecnologia, Thales é autor independente com mais de 70 obras publicadas sobre redes, segurança da informação, Linux e física, além de criador de conteúdo no blog Vetor Tech e na plataforma CiberDicas. No universo das artes e do entretenimento, atua como produtor de música eletrônica sob o projeto Yknex, cria ilustrações digitais e compartilha walkthroughs de games no YouTube.

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *