O que é hash? Uma explicação completa de funções hash
Resposta rápida
Hashing converte qualquer entrada em uma saída de tamanho fixo (hash) usando uma função unidirecional. A mesma entrada sempre produz o mesmo hash; entradas diferentes produzem hashes diferentes (resistência à colisão). Hashing é usado para integridade de dados, armazenamento de senhas e assinaturas digitais. Use nosso gerador de hash gratuito para calcular hashes SHA-256, SHA-1 e MD5 em seu navegador.
Introdução
Hashing é o processo de conversão de dados de entrada de qualquer tamanho em uma saída de tamanho fixo chamada hash ou resumo. Uma função hash é o algoritmo que realiza essa conversão. As funções hash criptográficas possuem propriedades especiais que as tornam úteis para integridade de dados, armazenamento de senhas, assinaturas digitais e endereçamento de conteúdo. Ao contrário da criptografia, o hash é unidirecional – você não pode recuperar a entrada do hash. Funções hash comuns incluem SHA-256 (usado em Bitcoin e TLS), SHA-3 e os antigos MD5 e SHA-1 (agora quebrados para uso de segurança).
Passo a passo
-
Entenda as propriedades da função hash
As funções hash criptográficas têm quatro propriedades principais: (1) Determinística – a mesma entrada sempre fornece a mesma saída. (2) Rápido para calcular. (3) Unidirecional – inviável para recuperar a entrada do hash. (4) Resistente a colisões – é inviável encontrar duas entradas diferentes com o mesmo hash. (5) Efeito avalanche – pequenas alterações na entrada alteram drasticamente a produção.
-
Aprenda algoritmos comuns
SHA-256 (saída de 256 bits, 64 caracteres hexadecimais) é o padrão moderno – usado em Bitcoin, TLS e assinaturas digitais. SHA-512 é mais seguro, mas mais lento. SHA-3 é a mais nova família. MD5 (128 bits) e SHA-1 (160 bits) estão quebrados para resistência à colisão e não devem ser usados para segurança.
-
Distinguir hash de criptografia
Hashing é unilateral – você não pode revertê-lo. A criptografia é bidirecional – você pode descriptografar com uma chave. Hashing é para integridade e verificação; criptografia é para confidencialidade. Nunca use um hash para armazenar dados que você precisa recuperar.
-
Use hashing corretamente
Para integridade dos dados, faça hash dos dados e compare com um hash em bom estado. Para senhas, use um hash de alongamento de chave lento (bcrypt, scrypt, Argon2) com um sal exclusivo - não SHA-256 bruto, que é muito rápido e vulnerável à força bruta.
Exemplos
Hash SHA-256
Entrada: Hello, World!
Saída: dffd6021bb2bd5b0af676290809ec008dfca50a8d29e6ac0a52c2d7e9f0a3b0c
Efeito avalanche
Entrada: Hello, World! (vs Hello, World?)
Saída: Hash completamente diferente, apesar da mudança de um caractere
MD5 hash (quebrado, somente legado)
Entrada: Hello, World!
Saída: ed0760733d7505e9ceacf8af225020ac
Problemas comuns
- Usando MD5 ou SHA-1 para segurança – ambos são quebrados para resistência à colisão. Use SHA-256 ou mais forte para qualquer finalidade de segurança.
- Hashing de senhas sem sal — senhas idênticas produzem hashes idênticos, permitindo ataques à tabela arco-íris. Use bcrypt, scrypt ou Argon2 com um sal exclusivo.
- Confundir hash com criptografia — o hash é unilateral (não pode ser revertido); a criptografia é bidirecional (pode ser descriptografada com uma chave).
- Esperar que os hashes sejam únicos — colisões são teoricamente possíveis, mas praticamente inviáveis para algoritmos seguros (SHA-256 tem 2 ^ 256 saídas possíveis).
Dicas
- Use SHA-256 para verificação de integridade de dados, endereçamento de conteúdo e assinaturas digitais.
- Para armazenamento de senha, use bcrypt, scrypt ou Argon2 —não SHA-256 bruto. Esses algoritmos possuem alongamento fundamental para resistir à força bruta.
- Hashing é unidirecional – nunca use-o para armazenar dados que você precisa recuperar. Use criptografia para dados confidenciais.
- Use nosso Gerador de Hash para calcular SHA-256 e outros hashes instantaneamente em seu navegador.