Gerador de Hash MD5
Gera hash MD5 de qualquer texto
Texto de Entrada
Hash MD5
O hash MD5 aparecerá aqui…
O Que É Hashing MD5?
MD5 (Message-Digest Algorithm 5) é uma função de hash criptográfico que produz um digest fixo de 128 bits (16 bytes) a partir de qualquer entrada, independentemente do seu tamanho. Publicado em 1992 por Ronald Rivest como RFC 1321, o MD5 foi projetado como um sucessor mais rápido do MD4 e rapidamente se tornou uma das funções de hash mais amplamente usadas na internet. O algoritmo processa a entrada em blocos de 512 bits por quatro rounds de 16 operações cada, usando uma função não linear diferente por round, para produzir uma impressão digital hexadecimal de 32 caracteres.
Uma função de hash é uma transformação unidirecional: dado um valor de entrada, você calcula o hash instantaneamente, mas tendo apenas o hash, não é possível recuperar a entrada original. Mesmo uma alteração de um único bit na entrada produz um digest completamente diferente — propriedade chamada de efeito avalanche. O MD5 mapeia um espaço de entrada infinito para um espaço de saída fixo de 128 bits, portanto colisões (duas entradas diferentes produzindo o mesmo hash) são matematicamente garantidas de existir, mas uma função de hash segura torna encontrá-las computacionalmente inviável.
Desde 2004, pesquisadores demonstraram ataques de colisão práticos contra o MD5, o que significa que ele não é mais considerado seguro para assinaturas digitais, certificados ou qualquer contexto onde a resistência a colisões seja necessária. No entanto, o MD5 continua amplamente usado para fins não relacionados à segurança: verificação de integridade de arquivos após downloads, geração de chaves de cache, deduplicação de conteúdo e criação de identificadores determinísticos a partir de strings. Para essas aplicações, a velocidade do algoritmo e o suporte ubíquo em bibliotecas o tornam uma escolha prática. Em 2008, Marc Stevens e colaboradores publicaram um ataque de colisão de prefixo escolhido, significando que um atacante pode criar dois documentos com prefixos arbitrários que compartilham o mesmo digest. Esta técnica foi demonstrada no Chaos Communication Congress de 2008 pela construção de um certificado de Autoridade de Certificação falso. O malware Flame de 2012 explorou colisões de prefixo escolhido para falsificar um certificado de assinatura de código da Microsoft, permitindo que o malware se disfarçasse como uma atualização legítima do Windows. Esses exploits do mundo real confirmaram que o algoritmo é criptograficamente comprometido para qualquer uso baseado em confiança e não deve ser utilizado onde um adversário pode influenciar as entradas sendo processadas.
Por Que Usar Este Gerador MD5?
Gere hashes MD5 instantaneamente sem instalar nada ou escrever código. Cole seu texto e obtenha o digest hex de 32 caracteres em tempo real.
Casos de Uso do MD5
MD5 vs Outros Algoritmos de Hash
O MD5 é o mais rápido e compacto dos algoritmos de hash comuns, mas oferece as garantias de segurança mais fracas. A tabela abaixo compara tamanhos de digest, padrões e casos de uso adequados para cada algoritmo.
| Algoritmo | Tamanho do Digest | Comprimento Hex | Padrão | Melhor Para |
|---|---|---|---|---|
| MD5 | 128 bits | 32 hex chars | 1992 / RFC 1321 | Checksums, non-security fingerprints |
| SHA-1 | 160 bits | 40 hex chars | 1995 / RFC 3174 | Legacy git commits (being replaced) |
| SHA-256 | 256 bits | 64 hex chars | 2001 / FIPS 180-4 | TLS certificates, blockchain, JWTs |
| SHA-384 | 384 bits | 96 hex chars | 2001 / FIPS 180-4 | Government systems, higher security margin |
| SHA-512 | 512 bits | 128 hex chars | 2001 / FIPS 180-4 | Digital signatures, HMAC with large keys |
| SHA-3 | 256 bits | 64 hex chars | 2015 / FIPS 202 | Post-quantum readiness, backup standard |
| BLAKE3 | 256 bits | 64 hex chars | 2020 | High-performance checksums, Merkle trees |
Como o MD5 Funciona
O MD5 processa a entrada por meio de uma construção Merkle-Damgård: a mensagem é preenchida para um múltiplo de 512 bits, dividida em blocos, e cada bloco é alimentado por quatro rounds de 16 operações bitwise que misturam a entrada com constantes pré-calculadas derivadas de seno. O resultado é um estado de 128 bits que se torna o digest final.
Cada round aplica uma função auxiliar não linear distinta a três dos quatro valores de estado de 32 bits (A, B, C, D). O Round 1 usa F(B,C,D) = (B AND C) OR (NOT B AND D) — um seletor condicional bitwise. O Round 2 usa G(B,C,D) = (B AND D) OR (C AND NOT D) — um seletor complementar. O Round 3 usa H(B,C,D) = B XOR C XOR D — uma função de paridade. O Round 4 usa I(B,C,D) = C XOR (B OR NOT D) — um combinador assimétrico. Essas quatro funções garantem que cada bit da entrada influencie o digest de saída, produzindo o efeito avalanche que faz com que pequenas mudanças na entrada causem grandes e imprevisíveis alterações no hash resultante.
MD5: 5eb63bbbe01eeed093cb22bb8f5acdc3
(128 bits = 16 bytes = 32 hex characters)
O algoritmo procede em cinco estágios: (1) acrescenta um bit 1, depois zeros, até que o comprimento da mensagem seja 448 mod 512; (2) acrescenta o comprimento original da mensagem como um inteiro de 64 bits little-endian; (3) inicializa quatro variáveis de estado de 32 bits (A, B, C, D) com constantes fixas; (4) processa cada bloco de 512 bits por 64 operações usando quatro funções não lineares (F, G, H, I), uma por round de 16 operações; (5) adiciona o estado resultante ao total acumulado e produz o hash final de 128 bits em ordem de bytes little-endian.
Exemplos de Código
Como gerar hashes MD5 nas linguagens e ambientes mais populares. Observe que o MD5 não está disponível na Web Crypto API do navegador — use uma biblioteca ou Node.js.
// MD5 is not available in Web Crypto API (it only supports SHA-*)
// Use a library like 'js-md5' or the Node.js crypto module
// Node.js (built-in crypto)
const crypto = require('crypto')
const hash = crypto.createHash('md5').update('hello world').digest('hex')
console.log(hash) // → "5eb63bbbe01eeed093cb22bb8f5acdc3"
// With Unicode input
crypto.createHash('md5').update('cafe\u0301').digest('hex')
// → "4fad076bae205e95bec9dacea498e2ab"import hashlib
# Basic MD5 hash
result = hashlib.md5(b'hello world').hexdigest()
print(result) # → "5eb63bbbe01eeed093cb22bb8f5acdc3"
# Hash a string (must encode to bytes first)
text = 'hello world'
hashlib.md5(text.encode('utf-8')).hexdigest()
# → "5eb63bbbe01eeed093cb22bb8f5acdc3"
# Hash a file
with open('file.bin', 'rb') as f:
md5 = hashlib.md5()
for chunk in iter(lambda: f.read(8192), b''):
md5.update(chunk)
print(md5.hexdigest())package main
import (
"crypto/md5"
"fmt"
)
func main() {
data := []byte("hello world")
hash := md5.Sum(data)
fmt.Printf("%x\n", hash)
// → 5eb63bbbe01eeed093cb22bb8f5acdc3
}# Using md5sum (Linux) or md5 (macOS) echo -n "hello world" | md5sum # → 5eb63bbbe01eeed093cb22bb8f5acdc3 - # macOS echo -n "hello world" | md5 # → 5eb63bbbe01eeed093cb22bb8f5acdc3 # Hash a file md5sum package.json # → a1b2c3d4e5f6... package.json # Using openssl (cross-platform) echo -n "hello world" | openssl md5 # → MD5(stdin)= 5eb63bbbe01eeed093cb22bb8f5acdc3