utildev
← Todas as categorias

Hash & Criptografia

MD5, SHA-256, HMAC, JWT e mais, direto no navegador

A categoria de Hash & Criptografia oferece ferramentas para calcular funções hash (MD5, SHA-1, SHA-256), gerar códigos de autenticação HMAC e decodificar tokens JWT. São operações fundamentais em segurança da informação, usadas para verificar integridade de arquivos, autenticar mensagens e implementar autenticação em APIs modernas. Entender a diferença entre essas técnicas evita erros comuns, como confiar em um algoritmo obsoleto para proteger senhas ou tratar um JWT como se seu conteúdo fosse secreto. Estas ferramentas servem tanto para uso prático — calcular o hash de um arquivo ou depurar um token durante o desenvolvimento — quanto para estudo, já que cada seção explica o raciocínio por trás do algoritmo, não só o resultado.

Uma função hash transforma qualquer entrada em uma saída de tamanho fixo, de forma determinística e (idealmente) irreversível. MD5 produz um hash de 128 bits e já é considerado inseguro para fins criptográficos desde meados dos anos 2000, quando pesquisadores demonstraram colisões práticas — ainda é usado para checksums não críticos, como verificar a integridade de downloads. SHA-1 (160 bits) teve o mesmo destino: colisões práticas foram demonstradas pelo Google em 2017. SHA-256, parte da família SHA-2, é o padrão atual recomendado para praticamente todo uso criptográfico, incluindo blockchain e certificados TLS.

A diferença crucial entre hash e criptografia é a reversibilidade: hash é uma via de mão única — não existe "decodificar" um hash SHA-256 de volta ao texto original, apenas recalcular o hash de um candidato e comparar. Já a criptografia (simétrica ou assimétrica) é desenhada para ser revertida por quem possui a chave correta. Confundir os dois é um erro comum: "criptografar uma senha" tecnicamente deveria ser "gerar o hash de uma senha", já que senhas nunca devem ser armazenadas de forma reversível.

HMAC (Hash-based Message Authentication Code) combina uma função hash com uma chave secreta para produzir um código que comprova tanto a integridade quanto a autenticidade de uma mensagem — ou seja, prova que ela não foi alterada e que foi gerada por quem possui a chave. É amplamente usado para assinar webhooks (verificar que uma requisição realmente veio do serviço esperado) e em esquemas de autenticação de API.

JWT (JSON Web Token) é um formato compacto para transmitir informações verificáveis entre partes, muito usado em autenticação de APIs. Um JWT tem três partes separadas por pontos: header (algoritmo usado), payload (os dados/claims, como ID do usuário e validade) e assinatura (calculada com HMAC ou um par de chaves assimétricas). É importante entender que o payload de um JWT é apenas codificado em Base64, não criptografado — qualquer pessoa pode decodificá-lo e ler seu conteúdo, mas não pode alterá-lo sem invalidar a assinatura.

Ferramentas

Hasher MD5
Gere hashes MD5 de textos e strings
Hasher SHA1
Gere hashes SHA1 de textos e strings
Hasher SHA256
Gere hashes SHA256 para máxima segurança
Gerador de HMAC
Gere códigos HMAC com chaves secretas
Decodificador JWT
Decodifique e analise tokens JWT

Artigos relacionados

O que é JWT e como funciona?7 min →SHA-256 vs MD5: qual usar para segurança?6 min →O que é HMAC e quando usar?5 min →

Perguntas frequentes

MD5 ainda é seguro para alguma coisa?

Não para segurança. MD5 é vulnerável a ataques de colisão, então não deve ser usado para senhas, assinaturas digitais ou verificação de integridade contra adulteração intencional. Ainda serve para checksums não críticos, como detectar corrupção acidental de arquivos.

Posso decodificar um hash de volta ao texto original?

Não diretamente — funções hash são de mão única por design. O que é possível é um ataque de força bruta ou dicionário/rainbow table, testando candidatos até encontrar um que produza o mesmo hash.

É seguro decodificar um JWT nesta ferramenta?

Sim, para tokens que você mesmo gerou ou tokens de teste. Evite colar tokens de produção com dados sensíveis em qualquer ferramenta online, mesmo que o processamento seja local — como boa prática de segurança.

Qual a diferença entre assinar e criptografar um JWT?

Um JWT assinado (JWS, o formato mais comum) garante integridade e autenticidade, mas o conteúdo é legível por qualquer um. Um JWT criptografado (JWE) também oculta o conteúdo, mas é bem menos comum na prática.