Um hash criptográfico é uma função determinística que transforma uma entrada de qualquer tamanho em uma saída de tamanho fixo: o produz 128 bits, o -1 produz 160, o SHA-256 produz 256. A mesma entrada sempre gera o mesmo resumo, e mudar um único bit da entrada produz um resumo completamente diferente.

Três propriedades de segurança

Um bom hash resiste a três coisas. Resistência à pré-imagem: dado um resumo h, é inviável encontrar qualquer entrada m com hash(m) = h. Resistência à segunda pré-imagem: dada uma entrada, é inviável achar outra diferente com o mesmo resumo. Resistência a colisões: é inviável achar duas entradas que compartilhem um resumo.

Ser de mão única é a primeira delas. A função mistura e descarta estrutura de propósito, então não existe fórmula que a execute ao contrário.

Hash não é criptografia

"Descriptografar este hash" é um erro de categoria. A criptografia tem uma chave e um inverso definido; o hash não tem nenhum dos dois. Não há nada para descriptografar, porque a operação nunca foi projetada para ser desfeita.

Então como as pessoas revertem hashes

Elas não invertem a função. Elas buscam. Há dois caminhos: manter uma tabela pré-computada de pares entrada-para-hash e consultar o resumo, ou gerar entradas candidatas, aplicar o hash em cada uma e comparar. Ambos encontram uma correspondência testando entradas, não revertendo matemática.

Essa é a ideia central que este demonstrador torna concreta. Um hash protege um segredo apenas na medida em que esse segredo é difícil de adivinhar. Uma entrada fraca, como um PIN (número de identificação pessoal, do inglês personal identification number) curto, é recuperável por busca em instantes, mesmo que o hash em si continue matematicamente de mão única. A força nunca esteve no hash; esteve na entropia daquilo que você forneceu.

Ser de mão única não é a propriedade que protege uma senha

Um hash criptográfico resiste a ataque de pré-imagem: dada a saída, não se computa a entrada. Isso é real e não é o que quebra num vazamento de senhas.

Um atacante com um hash roubado não o inverte. Ele adivinha para frente — hasheando candidatos até um casar — o que não exige inversão nenhuma e derrota a mão única por completo. A função de hash está fazendo o trabalho dela perfeitamente enquanto a conta cai.

É essa a razão de hashing de senha ser uma disciplina separada de hashing. SHA-256 é um excelente hash e um péssimo hash de senha, não por ser fraco, mas por ser rápido — e velocidade é exatamente o orçamento do atacante.