Função de Hash
Uma ferramenta que cria impressões digitais para dados
Uma função de hash é uma ferramenta de programação que cria impressões digitais para dados. Ela recebe qualquer quantidade de dados, os embaralha e retorna um resultado curto e único.
SHA = Secure Hashing Algorithm (Algoritmo de Hash Seguro), 256 = 256 bits (o tamanho do resultado).
O resultado da função de hash é só um monte de bytes. As letras e números que você vê são esses bytes representados em caracteres hexadecimais.
Propriedades
O que torna uma função de hash uma função de hash?
Algumas propriedades separam uma função de hash básica de uma forte:
- Determinística. O mesmo dado de entrada sempre produz o mesmo hash.
- Tamanho fixo. Qualquer entrada produz um hash do mesmo tamanho (o SHA-256 sempre produz 32 bytes).
- Efeito avalanche. Uma pequena mudança na entrada muda completamente o hash.
- Resistente à pré-imagem. Não é possível trabalhar de trás para frente, do hash para os dados originais.
- Resistente a colisões. É inviável encontrar duas entradas diferentes que produzam o mesmo hash.
Funções de Hash no Bitcoin
Quais funções de hash o Bitcoin usa?
O Bitcoin usa principalmente o SHA-256, mas também combina funções de hash:
SHA-256
A função de hash principal. Recebe dados e produz 32 bytes.
SHA-256
HASH256 (SHA-256 duplo)
O SHA-256 aplicado duas vezes. Usado em TXIDs, hashes de bloco e checksums.
HASH256
HASH160 (RIPEMD-160 ∘ SHA-256)
O SHA-256 seguido do RIPEMD-160, produzindo 20 bytes. Usado para criar hashes de chave pública e hashes de script.
HASH160
HMAC-SHA512
Um hash com chave, usado na derivação de chaves estendidas (BIP32).
HMAC-SHA512
PBKDF2
Uma função de derivação de chave (com HMAC-SHA512, 2048 iterações), usada para transformar uma frase mnemônica em uma seed (BIP39).