Toolyard

O que é um hash: MD5, SHA-1 e SHA-256 explicados

Uma impressão digital para os dados

Uma função hash pega qualquer entrada (uma palavra, um documento, um vídeo de 4 GB) e transforma em uma sequência curta, de tamanho fixo, chamada hash, resumo ou checksum. A mesma entrada sempre gera o mesmo hash, e a menor mudança gera um completamente diferente:

EntradaHash SHA-256
hello2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824
Hello185f8db32271fe25f561a6fc938b2e264306ec304eda518007d1764826381969
hello!ce06092fb948d9ffac7d1a376e404b26b7575bcc11ee05a4615fef4fec3a308b

Uma letra maiúscula ou um ponto de exclamação mudam todos os caracteres do resultado. Teste no Gerador de hash.

O que faz uma boa função hash

  • Determinística: a mesma entrada sempre gera o mesmo hash, em qualquer computador.
  • De mão única: não dá para voltar do hash para a entrada.
  • Resistente a colisões: deve ser praticamente impossível achar duas entradas diferentes com o mesmo hash.
  • Rápida de calcular para checksums, o que é útil, e também é o motivo de hashes rápidos não servirem para senhas (veja abaixo).

Hash não é criptografia

A criptografia funciona nos dois sentidos: com a chave, você recupera o original. Um hash não tem chave e não pode ser revertido; ele só permite verificar se algo confere. Base64 é outra coisa: é só uma codificação, e qualquer pessoa pode decodificar.

Os algoritmos mais comuns

AlgoritmoTamanhoSituação
MD5128 bits (32 caracteres hexadecimais)Quebrado desde 2004; só serve para detectar danos acidentais
SHA-1160 bits (40 caracteres hexadecimais)Quebrado: a primeira colisão real foi publicada em 2017
SHA-256256 bits (64 caracteres hexadecimais)Seguro; a escolha padrão hoje
SHA-512512 bits (128 caracteres hexadecimais)Seguro; muitas vezes mais rápido que o SHA-256 em computadores de 64 bits

Veja a palavra hello em cada um:

  • MD5: 5d41402abc4b2a76b9719d911017c592
  • SHA-1: aaf4c61ddcc5e8a2dabede0f3b482cd9aea9434d
  • SHA-256: 2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824

O que significa MD5 e SHA-1 estarem "quebrados"

Com MD5 e SHA-1, pesquisadores conseguem criar de propósito dois arquivos diferentes com o mesmo hash. Um atacante poderia usar isso para trocar um arquivo inofensivo por um malicioso com o mesmo checksum, ou para falsificar um documento assinado. Nenhum dos dois está quebrado no sentido de poder ser revertido, e um dano aleatório ainda muda o hash, então um checksum MD5 ainda detecta um download que parou no meio. O que ele não consegue é provar que ninguém adulterou o arquivo.

O SHA-256 e o SHA-512 fazem parte da família SHA-2, publicada em 2001, e não se conhece nenhum ataque prático contra eles. O SHA-3, padronizado em 2015, é um projeto diferente mantido como reserva.

Onde os hashes são usados

  • Verificar downloads: os desenvolvedores publicam o SHA-256 dos arquivos; se o seu conferir, ele é idêntico. Veja como verificar um checksum.
  • Assinaturas digitais e certificados HTTPS: calcula-se o hash do documento ou do certificado, e é esse hash que é assinado.
  • Git: cada commit e cada arquivo é identificado pelo hash. O Git sempre usou SHA-1 e passou a oferecer suporte a SHA-256.
  • Bitcoin e outras blockchains: os blocos são encadeados com SHA-256.
  • Encontrar arquivos duplicados: dois arquivos com o mesmo SHA-256 são o mesmo arquivo.

Hashes e senhas

Os sites nunca deveriam guardar a sua senha, só um hash dela; quando você entra, eles calculam o hash do que você digitou e comparam. Mas o SHA-256 é a ferramenta errada aqui: ele é tão rápido que um atacante com um banco de dados vazado consegue testar bilhões de senhas por segundo. Senhas precisam de um hash lento e com salt feito para isso, como bcrypt, scrypt ou Argon2. O salt é um valor aleatório somado a cada senha antes do hash, para que duas pessoas com a mesma senha fiquem com hashes diferentes.

Teste

O Gerador de hash calcula ao mesmo tempo MD5, SHA-1, SHA-256, SHA-384 e SHA-512 de qualquer texto ou arquivo, no seu navegador, e pode comparar com um checksum publicado.

Ferramentas deste guia

Mais guias

Como abrir arquivos HEIC no WindowsComo reduzir o tamanho de um PDFComo remover a localização das fotosComo extrair o áudio de um vídeoComo criar um QR code para o seu Wi-FiComo assinar um PDFComo verificar o checksum de um arquivo (SHA-256)PNG, JPG ou WebP: qual formato de imagem usarComo juntar arquivos PDFComo copiar o texto de uma imagemComo converter JPG para PDFComo converter um PDF para JPGComo dividir um PDF ou extrair páginasComo girar um PDF de forma permanenteComo adicionar números de página a um PDFComo colocar marca d'água em um PDFComo converter HEIC para JPG no MacComo converter WebP para JPGComo reduzir o tamanho de uma imagemComo converter um vídeo para GIFComo converter WAV para MP3Como criar uma senha forteComo converter Celsius para FahrenheitGB ou GiB: por que seu disco mostra menos espaçoComo calcular porcentagemComo calcular os dias entre duas datasO que é um timestamp UnixComo comparar dois arquivos de textoComo contar as palavras de um documentoComo ler um QR code de uma captura de tela ou imagemComo comprimir uma foto para 20 KB (ou qualquer tamanho)Como remover o fundo de uma fotoComo testar seu microfoneComo procurar pixels mortos numa telaComo gravar a telaComo criar um toque para iPhoneComo comprimir um vídeo para enviarComo remover a senha de um PDFComo colocar senha num PDFComo preencher um formulário PDFComo converter um PDF para WordComo desfocar um rosto numa fotoComo calcular seu IMCComo calcular a parcela de um financiamento imobiliárioComo marcar uma reunião entre fusos horáriosO que é uma expressão cron?Como obter o complemento reverso de uma sequência de DNAComo traduzir DNA em proteínaComo converter GenBank para FASTAComo encontrar sítios de restrição em uma sequência de DNAComo alinhar duas sequências de DNA ou de proteínaComo desenhar e conferir primers de PCRComo calcular a massa molarComo balancear uma equação químicaComo preparar uma solução de molaridade conhecidaComo calcular uma diluição (C1V1 = C2V2)Como calcular o pHComo calcular a concentração de DNA a partir da A260Como calcular a quantidade de inserto para uma ligaçãoComo converter RPM em g (RCF)Como contar células com um hemocitômetroComo usar o quadro de PunnettComo fazer um orçamento com a regra 50/30/20Bola de neve ou avalanche para quitar dívidasQuanto preciso para me aposentar?Como converter salário em valor por horaMargem de lucro ou markupComo calcular IVA e imposto sobre vendasComo fazer uma faturaQuanto imóvel eu posso comprar?Como ler o código de cores de resistoresComo escolher o resistor de um LEDComo calcular a queda de tensão num caboQuanto concreto eu preciso?Quanta tinta eu preciso?Como calcular uma sub-redeRegras dos algarismos significativos