Um hash é uma impressão digital de dados. Introduza qualquer entrada numa função hash e obterá uma sequência de caracteres de comprimento fixo. A mesma entrada produz sempre o mesmo hash. Altere um único caractere na entrada e o hash muda completamente. Esta propriedade torna os hashes úteis para a verificação. Pode verificar se um ficheiro não foi alterado comparando o seu hash com um valor válido conhecido. O Bitcoin utiliza o SHA-256. O Ethereum utiliza o Keccak-256. Cada bloco contém o hash do bloco anterior, que liga a cadeia.
Os hashes são unidirecionais. Não é possível trabalhar de trás para a frente, desde um hash até à entrada original. É por isso que são utilizados para palavras-passe e provas. Os mineiros competem para encontrar um hash abaixo de um determinado valor alvo. Alteram um nonce, calculam o hash do cabeçalho do bloco e verificam o resultado. O processo é de tentativa e erro numa escala massiva. Encontrar um hash válido prova que houve trabalho. Verificá-lo não exige quase nenhum esforço. Esta assimetria é a base da prova de trabalho. As funções hash são também utilizadas para gerar endereços de carteira e verificar a integridade das transações.
Propriedades da função hash
- Determinístico — a mesma entrada produz sempre a mesma saída.
- Cálculo rápido — verificação barata
- Resistente à pré-imagem — não é possível reverter o hash
- Efeito avalanche — pequena alteração na entrada, resultado completamente diferente
Um hash não é encriptação. É um resumo unidirecional. Não há chave e não há forma de desencriptar.
Comments
No comments yet. Be the first to share a thought.
Leave a comment