Initializing, please wait a moment

MD5 vs SHA-256 - quando usar cada funcao de hash


MD5 e SHA-256 produzem impressoes digitais de comprimento fixo de dados de entrada arbitrarios. Eles parecem intercambiaveis por fora - cole texto, obtenha hex - mas resolvem problemas diferentes. MD5 e uma impressao digital rapida, criptograficamente quebrada, adequada para verificacoes de integridade nao adversariais. SHA-256 e um hash moderno, criptograficamente solido, usado onde quer que um atacante possa tentar forjar uma colisao. Escolher o certo para o trabalho economiza tempo de CPU e previne lacunas de seguranca reais.


O que uma funcao de hash realmente faz

Uma funcao de hash recebe bytes de entrada de qualquer comprimento e retorna um digest de comprimento fixo. A mesma entrada sempre produz o mesmo digest. Mudar um unico bit de entrada produz um digest completamente diferente (o efeito avalanche). O digest e unidirecional - voce nao pode reconstruir a entrada do digest.

MD5 retorna 128 bits (32 caracteres hex). SHA-256 retorna 256 bits (64 caracteres hex). Ambos sao deterministicos. Ambos sao rapidos. Ambos nao revelam nada sobre a estrutura da entrada a partir da saida.


Comparacao lado a lado

AtributoMD5SHA-256
Comprimento do digest128 bits (32 caracteres hex)256 bits (64 caracteres hex)
Projetado em1991 (Ron Rivest)2001 (NSA, FIPS 180-2)
Familialinhagem MD4familia SHA-2
Resistencia a colisoesQuebrada desde 2004 (Wang et al.); colisoes praticas em segundosSem colisao pratica conhecida; ~2128 operacoes para encontrar uma
Resistencia de segunda pre-imagemEnfraquecida mas sem ataque pratico para entrada pre-computadaForte; ~2256 operacoes
Velocidade (x86-64 moderno)~500 MB/s por nucleo~300 MB/s por nucleo (SHA-NI: ~1,5 GB/s)
Aceleracao de hardwareSem instrucao dedicadaIntel SHA-NI, extensoes crypto ARMv8
Seguro para uso criptograficoNao - nao usar para assinaturas, cert pinning, hash de senhaSim (fora de hash de senha - use Argon2id/bcrypt para senhas)

Por que MD5 esta quebrado e o que isso realmente significa

Uma colisao e duas entradas diferentes que produzem o mesmo digest. A resistencia a colisoes do MD5 foi teoricamente quebrada em 2004 e praticamente quebrada em 2008 - um pesquisador pode criar dois arquivos com digests MD5 identicos em segundos em hardware de consumo. Isso quebrou o uso de MD5 em assinaturas digitais (o malware Flame forjou uma assinatura do Windows Update em 2012), certificados TLS (todas as principais CAs pararam de emitir certs assinados MD5 em 2014), e qualquer contexto onde um adversario pode influenciar as entradas.

A resistencia de segunda pre-imagem do MD5 e mais fraca que a do SHA-256, mas nao tem ataque pratico conhecido contra entradas arbitrarias ja existentes. Essa e a janela estreita onde MD5 ainda e seguro: confirmar que um digest ja computado corresponde a um arquivo que voce baixou, quando nenhum adversario teve a chance de criar uma colisao contra esse arquivo especifico.


Quando MD5 ainda esta bem

Integridade de arquivo para ambientes nao adversariais. Um download de ISO Linux publica um MD5 junto com a imagem; se o hash corresponde, seu download nao foi corrompido em transito. Nao ha adversario criando um ISO forjado contra esse MD5 especifico - eles precisariam ter seu arquivo publicado no site upstream primeiro.

Caches de de-duplicacao. Um proxy de cache indexa objetos por MD5 de seu conteudo para detectar repeticoes. Colisoes nesse contexto sao benignas - dois objetos diferentes com o mesmo MD5 significam uma falha de cache, sem consequencia de seguranca.

Fingerprint de linhas de banco de dados. "Este registro mudou desde a ultima sincronizacao?" - MD5 da linha, compare com digest armazenado. Mais rapido que SHA-256; o modelo de adversario esta ausente.

Enderecamento de conteudo Git. Git usa SHA-1 (em breve SHA-256), nao MD5 - mas a justificativa do design se aplica: para um armazenamento enderecado por conteudo onde voce confia no escritor, um hash de 128 bits e suficiente se a colisao nao for um vetor de ataque.


Quando SHA-256 e a escolha correta

Assinaturas digitais. Certificados TLS, assinatura de codigo, assinatura JWT - onde quer que um atacante ganhe ao forjar uma assinatura, use SHA-256 ou mais forte.

Cert pinning e impressoes digitais de chave publica. A impressao digital SHA-256 da chave publica de um certificado e o padrao para pinning.

Blockchain e armazenamento enderecavel por conteudo onde adversarios participam. Bitcoin usa SHA-256 duas vezes (SHA-256d) para cabecalhos de bloco e identificadores de transacao. Qualquer armazenamento onde usuarios contribuem conteudo e colisoes podem ser exploradas precisa de SHA-256.

HMAC para autenticacao de mensagens. HMAC-SHA-256 e a linha de base para assinatura de requisicao de API (AWS Signature v4, GitHub webhooks, Stripe). HMAC-MD5 ainda e usado em alguns protocolos legados mas e cada vez mais sinalizado por scanners de conformidade.


O que usar para senhas (spoiler: nenhum)

Nao use MD5 ou SHA-256 diretamente para armazenamento de senhas. Ambos sao rapidos - isso e ruim para senhas. Um atacante com um digest vazado pode testar bilhoes de senhas candidatas por segundo em uma GPU. Use uma funcao de hash de senha: Argon2id (recomendacao OWASP 2025), bcrypt, ou scrypt. Essas funcoes sao intencionalmente lentas e exigentes em memoria, entao um atacante pode testar apenas milhares de candidatos por segundo, nao bilhoes.


Realidade de desempenho em 2026

MD5 ainda e ~1,7× mais rapido que SHA-256 em uma CPU sem SHA-NI. Em CPUs com Intel SHA-NI (Goldmont+, 2017) ou extensoes crypto ARMv8 (Cortex-A53 em diante), SHA-256 realmente iguala ou excede o throughput do MD5 - a lacuna de velocidade que motivou escolher MD5 nos anos 2000 nao se mantem mais.

JavaScript no navegador com WebCrypto (crypto.subtle.digest('SHA-256', data)) atinge ~200 MB/s em um laptop moderno. Nosso conversor MD5 executa MD5 em velocidade similar via implementacao wasm.


MD5 ou SHA-256: a regra da fronteira de confianca

A escolha entre MD5 e SHA-256 depende de uma unica pergunta - se um adversario pode influenciar a entrada que voce esta fazendo hash. Se um uploader remoto, um atacante de rede, ou qualquer parte fora de sua fronteira de confianca pode moldar os bytes que chegam a funcao de hash, escolha SHA-256 (ou SHA-3, ou BLAKE3) para que um ataque de colisao nao possa forjar um digest correspondente. Se as entradas vem de seu proprio pipeline e voce esta fingerprintando-as para cache, de-duplicacao, ou deteccao de mudanca, MD5 esta bem e roda ligeiramente mais rapido em CPUs sem aceleracao SHA-NI. A decisao e binaria e vive na fronteira de confianca; uma vez que voce nomeou de qual lado dessa fronteira a entrada esta, o algoritmo a usar e determinado.


Ferramentas relacionadas


← Voltar para Developer Tools

Why trust these tools

  • Ten-plus years of web tooling. The freetoolonline editorial team has shipped browser-based utilities since 2015. The goal has never changed: get you to a working output fast, without an install.
  • Truly in-browser - no upload. Every file-processing tool on this site runs in your browser through modern Web APIs (File, FileReader, Canvas, Web Audio, WebGL, Web Workers). Your photo, PDF, audio, or text never leaves your device.
  • No tracking during tool use. Analytics ends at the page view. The actual input you paste, drop, or capture is never sent to any server and never written to any log.
  • Open-source core components. The processing engines underneath (libheif, libde265, pdf-lib, terser, clean-css, ffmpeg.wasm, and others) are public and audit-able. We link to each one in its tool page's footer.
  • Free, with or without ads. All tools are fully functional without sign-up. The Disable Ads button in the header is always available if you need a distraction-free run.