O que é um Hash?

Uma função de hash é um algoritmo que transforma uma grande quantidade de dados (como um texto, uma senha ou um arquivo) em uma pequena sequência de letras e números de tamanho fixo, chamada "hash".

As principais características de uma boa função de hash são:

  • Determinística: A mesma entrada sempre gera a mesma saída.
  • Rápida de calcular: O processo de gerar o hash é eficiente.
  • Irreversível: É praticamente impossível descobrir a entrada original a partir do hash.
  • Resistente a colisões: É muito difícil encontrar duas entradas diferentes que gerem o mesmo hash.

MD5 (Message Digest 5)

Status: Obsoleto e Inseguro

Criado em 1991, o MD5 foi um dos algoritmos de hash mais populares. Ele gera um hash de 128 bits (32 caracteres hexadecimais).

Defeitos e Fraquezas

Sua principal fraqueza é a vulnerabilidade a **ataques de colisão**. Isso significa que hackers conseguem, com relativa facilidade, criar duas entradas diferentes que resultam no mesmo hash. Por isso, ele **NUNCA** deve ser usado para fins de segurança, como armazenamento de senhas ou assinaturas digitais.

Uso Atual

Ainda pode ser usado em contextos não relacionados à segurança, como na verificação de integridade de arquivos (checksum), para garantir que um arquivo não foi corrompido durante um download.

SHA-1 (Secure Hash Algorithm 1)

Status: Obsoleto e Inseguro

Desenvolvido pela NSA e lançado em 1995, o SHA-1 gera um hash de 160 bits (40 caracteres). Foi o sucessor natural do MD5.

Defeitos e Fraquezas

Assim como o MD5, o SHA-1 também se mostrou vulnerável a ataques de colisão. Em 2017, o Google demonstrou o primeiro ataque de colisão prático (chamado SHAttered), provando que o algoritmo não era mais seguro. Todos os principais navegadores e sistemas operacionais pararam de aceitar certificados assinados com SHA-1.

Uso Atual

Foi oficialmente descontinuado para qualquer uso que exija segurança. É encontrado apenas em sistemas legados que ainda não foram atualizados.

SHA-2 (SHA-256 / SHA-512)

Status: Seguro e Recomendado

SHA-2 é uma família de algoritmos que inclui o SHA-256 e o SHA-512. Eles geram hashes de 256 e 512 bits, respectivamente, sendo significativamente mais fortes que seus predecessores.

Força

Até hoje, não há ataques práticos conhecidos contra o SHA-2. Ele é o padrão da indústria para uma vasta gama de aplicações de segurança, desde assinaturas digitais e certificados SSL/TLS até a tecnologia de blockchain do Bitcoin (que usa SHA-256).

Uso Atual

É amplamente utilizado e recomendado para a maioria das necessidades de hashing seguro.

Bcrypt

Status: Padrão Ouro para Senhas

O Bcrypt não é um simples algoritmo de hash; é uma **função de hash de senha**. Sua principal finalidade é proteger senhas de usuários.

Força e Funcionamento

Sua genialidade vem de duas características principais:

  • É Lento: Ele é intencionalmente lento de se calcular. Isso não atrapalha um login de usuário, mas torna ataques de força bruta (tentar bilhões de senhas por segundo) inviáveis.
  • Inclui um "Sal" (Salt): O Bcrypt gera e armazena automaticamente uma string aleatória (o "sal") junto com o hash. Isso garante que, mesmo que dois usuários tenham a mesma senha, seus hashes serão completamente diferentes, protegendo contra ataques de "rainbow table".
Uso Atual

É a escolha preferida e mais recomendada por especialistas de segurança para armazenar senhas em bancos de dados.