Hash não faz criptografia. Pq criptografia envolve esconder informação. Se ele é irreversível, então não há informação escondida.
O que eu quis dizer é que hash gera um conjunto de bytes, que será praticamente unico para uma massa de dados qualquer. E que, qualquer variação nessa massa, gerará um hash completamente diferente. Por isso, digo que é praticamente impossível duas massas de dados diferentes gerarem o mesmo hash.
Ele é mais similar à um dígito verificador, mas um dígito pra lá de seguro.
No texto ali, eu não estava falando em reverter o hash.
Não disse que a pessoa descriptografa o hash. O hash é mesmo irreversível.
O que determina sobre o que o hash é gerado é o protocolo criptográfico. Eu citei um comum, que é o sender gerar o hash sobre o texto plano, antes de criptografa-lo. O texto plano é então criptografado com algum algoritmo (simétrico ou assimétrico), e o hash anexado ao pacote.
O pacote fica composto de:
mensagem cifrada + hash da mensagem plana
O processo que citei é na recepção do dado:
Do outro lado, o cliente deve descriptografar a mensagem e, de posse do texto plano, gerar novamente o hash e comparar se é igual aquele enviado no pacote de dados.
Outros protocolos podem gerar hash em outras etapas do processo (como sobre o pacote criptografado), ou até em múltiplas etapas.