This article has been translated from English to Portuguese.
Qual é o objetivo do hashing?
O principal objetivo do hashing é verificar a integridade de um dado.
Uma vez que o hash gerado é ÚNICO para os dados de entrada, actua como uma "impressão digital" única dos dados de entrada.
Isto faz com que um hash seja útil para verificar a integridade dos dados enviados através de canais de comunicação inseguros, como a Internet. A integridade dos dados significa apenas que os dados não foram alterados de uma forma não aprovada.
O valor de hash dos dados recebidos pode ser comparado com o valor de hash dos dados antes de serem enviados para determinar se os dados foram alterados.
Se eu publicar a mensagem e o valor de hash que gerei a partir dela, podes gerar um valor de hash a partir da mensagem que recebeste e comparar os valores de hash.
Usando um exemplo muito simples, digamos que estamos prestes a encontrar-nos para almoçar e, mesmo antes de sair pela porta, lembro-me da última vez que estivemos juntos...

Embora a tua personalidade fosse muito simpática, o teu cheiro não era nada agradável. 😬
Por isso, quero enviar-te uma mensagem: "Por favor, usa desodorizante."
Mas, antes de te enviar esta mensagem, passo-a por uma função de hash (SHA-256). O hash é:
33ebb528eab107766343d0ac591952bb68ee959d45b7a8b399628e662f3bc1ef
Primeiro envio-te este hash.
E depois envio-te a mensagem de texto.
Quando receberes a minha mensagem, pensas: "WTF? Ele acabou mesmo de me dizer isso? Ou será que a mensagem foi interceptada durante o trânsito e a mensagem original foi alterada?".

Então, passa a mensagem pela mesma função hash.
33ebb528eab107766343d0ac591952bb68ee959d45b7a8b399628e662f3bc1ef
Compara então o teu hash com o hash que veio antes da mensagem de texto.
Se ambos os valores de hash forem os mesmos, então prova que:
- A mensagem foi enviada corretamente.
- Que os teus sovacos cheiram mesmo mal!
- A mensagem não foi deliberadamente alterada por alguém entre o momento em que a enviei para ti e o momento em que a recebeste.
Claro que, no mundo real, são os nossos computadores que fazem tudo isto por nós.
E, com sorte, tu manténs os teus sovacos a cheirar a fresco. 😅
*Tecnicamente, antes de te enviar o hash, ele deve ser protegido de alguma forma, mas eu quis manter o exemplo simples. A forma como o hash fica protegido durante o trânsito será abordada numa lição posterior.
Exemplo real de hashing: senhas online
Isto pode surpreender-te, mas provavelmente encontras hashing na tua vida diária....sempre que fazes login para verificar o teu email. 📧

Quando crias um endereço de correio eletrónico e uma palavra-passe, o teu fornecedor de correio eletrónico provavelmente não guarda a tua palavra-passe real.
Em vez disso, o teu fornecedor de e-mail executa a palavra-passe através de uma função de hash e guarda o hash da tua palavra-passe.
Sempre que tentas iniciar sessão na tua conta de correio eletrónico, o teu fornecedor de correio eletrónico faz um has h da palavra-passe que introduziste e compara esse hash com o hash que guardou.
Só quando os dois hashes coincidem é que estás autorizado a aceder ao teu correio eletrónico.
Vejamos por que razão NÃO guardam a tua palavra-passe real...
Se as palavras-passe reais forem guardadas e os piratas informáticos entrarem no sistema, podem roubá-las. Isto não é nada bom para os utilizadores que utilizam a mesma palavra-passe para vários sites!
Uma solução é fazer o hash da palavra-passe...
Ao fazer o hash da palavra-passe, a empresa protege a informação do utilizador. Mesmo que um hacker invada o sistema, não terá acesso às palavras-passe reais, apenas aos hashes.
Lembra-te de que os hashes são irreversíveis, pelo que é impossível para o hacker descobrir qual é a palavra-passe real apenas olhando para o hash. O hashing garante que os dados são armazenados num estado codificado, pelo que é mais difícil de roubar.

Sempre que inicias sessão, o teu fornecedor de correio eletrónico não guarda a palavra-passe em texto simples, apenas precisa do hash.
Quando introduzes a tua palavra-passe, esta é executada através da função de hash.
O resultado é comparado com o hash que está guardado na base de dados.
Se os valores do hash forem iguais, a palavra-passe está correta.
Se introduzires uma palavra-passe errada, o resultado será um hash diferente do que foi guardado. Os hashes NÃO corresponderiam, pelo que a tua tentativa de início de sessão falharia.
Como podes ver, uma função de hash distorce os dados e torna-os ilegíveis. Mesmo que um hacker tenha acesso ao servidor do teu fornecedor de e-mail, os detalhes armazenados não podem ser descodificados.


