Definição
Uma função hash criptográfica é um algoritmo matemático que recebe quaisquer dados de entrada, independentemente do tamanho, e os transforma em um resumo de comprimento fixo. Algumas versões modernas, chamadas Funções de Saída Extensíveis (XOFs), podem produzir saídas de comprimento personalizável. As funções hash possuem diversas propriedades essenciais: são determinísticas, ou seja, a mesma entrada sempre produz a mesma saída; são resistentes à pré-imagem, tornando praticamente impossível reverter um hash para encontrar a entrada original; são resistentes a colisões, tornando praticamente impossível encontrar duas entradas diferentes que produzam o mesmo hash; e exibem o efeito avalanche, onde mesmo uma pequena alteração na entrada resulta em uma saída completamente diferente. Bitcoin usa SHA-256 para mineração e hash de transações, enquanto Ethereum usa Keccak-256, uma variante do SHA-3. Funções hash são a base de segurança blockchain—elas possibilitam tudo, desde a comprovação de trabalho na mineração até a criação de Árvore Merkle Comprovantes e assinatura de transações.
Propriedades da função hash ilustradas
Exemplos de hash SHA-256: Entrada: “Hello” Saída: 185f8db32271fe25f561a6fc938b2e26…
Entrada: “hello” (minúsculas) Saída: 2cf24dba5fb0a30e26e83b2ac5b9e29e… → Completamente diferente (efeito avalanche)
Entrada: arquivo de vídeo de 10 MB Saída: Ainda apenas 64 caracteres hexadecimais (256 bits) → Tamanho de saída fixo, independentemente do tamanho da entrada
Demonstração de resistência à pré-imagem: Objetivo: Encontrar uma entrada que produza “0000abc…”. Único método: Força bruta (tentar bilhões de entradas). Mineração de Bitcoin: Exatamente isso – encontrar um nonce que produza um hash abaixo do alvo. A 500 exahashes/segundo (rede Bitcoin): ~500,000,000,000,000,000,000 tentativas/segundo.
Resistência a colisões: Objetivo: Encontrar duas entradas diferentes que produzam o mesmo hash SHA-256: Nenhuma colisão encontrada (2^128 operações para encontrar uma) SHA-1 (obsoleto): Colisões encontradas (Google, 2017) → Não é mais confiável
Funções de hash usadas em criptografia
| Função Hash | Tamanho da saída | Usado em | Status |
| SHA-256 | 256 pedaços | Bitcoin (mineração, transações) | Garanta o |
| Keccak-256 | 256 pedaços | Ethereum (endereços, transações) | Garanta o |
| SHA-3-256 | 256 pedaços | Alguns protocolos mais recentes | Garanta o |
| BLAKE2/BLAKE3 | Variável (como um XOF) | Zcash, alguns protocolos | Seguro, mais rápido |
| SHA-1 | 160 pedaços | Legado (obsoleto) | QUEBRADO (colisão detectada) |
| MD5 | 128 pedaços | Legado (obsoleto) | QUEBRADO (colisão trivial) |
| RIPEMD-160 | 160 pedaços | Derivação de endereço Bitcoin | Seguro (com SHA-256) |
Perguntas frequentes
P: Por que não podemos inverter um hash para encontrar a entrada?
As funções hash envolvem operações matemáticas não invertíveis – elas descartam informações deliberadamente. Você pode verificar que hash(entrada) = saída, mas não pode reverter matematicamente hash(saída) → entrada. O único ataque geral conhecido é a força bruta: tentar várias entradas até encontrar uma cujo hash resulte no valor desejado. Para saídas de 256 bits, isso requer aproximadamente 2^256 tentativas – mais do que o número de átomos no universo observável. Essa irreversibilidade é o que torna as funções hash úteis para armazenamento de senhas, assinaturas digitais e prova de trabalho.
P: O que é o “efeito avalanche” e por que ele é importante?
O efeito avalanche significa que alterar até mesmo um único bit (um caractere) na entrada produz um hash de saída completamente diferente – tipicamente, cerca de metade dos bits na saída são alterados. Isso é importante para a segurança do blockchain: se o cabeçalho de um bloco for modificado, mesmo que ligeiramente (para alterar um carimbo de data/hora ou uma transação), o hash muda completamente e se torna inválido, exigindo que toda a prova de trabalho seja refeita. Isso torna o histórico de transações do blockchain efetivamente imutável.
P: Como as funções hash são usadas em assinaturas digitais?
Em vez de assinar um documento grande diretamente, você primeiro calcula o hash do documento (produzindo 256 bits independentemente do tamanho do documento) e, em seguida, assina o hash com sua chave privada. Isso é eficiente (assinar um hash de tamanho fixo é muito mais rápido do que assinar um arquivo de gigabytes) e mantém a segurança (a assinatura comprova que você assinou aquele documento específico – qualquer modificação altera o hash e invalida a assinatura). Todas as assinaturas de transações em blockchain seguem esse padrão.










