O que são hashes?
Hashes são fórmulas matemáticas que usam uma sequência de dados de comprimento variável, geralmente na forma de texto, e os convertem em valores numéricos mais curtos e de comprimento fixo. Os hashes são usados com freqüência em bancos de dados de computadores para tornar as pesquisas mais rápidas e eficientes. Eles também são usados na criptografia para garantir que as senhas não sejam comprometidas e para autenticar assinaturas digitais, entre outros usos. Hashes também recebem o nome de funções de hash e também podem ser considerados algoritmos.
Hashes desempenham um grande papel na facilitação de pesquisas no banco de dados. Em um banco de dados composto por nomes, por exemplo, se um usuário pesquisar "John Doe", o computador precisará corresponder todos os caracteres da pesquisa aos de todas as entradas do banco de dados. Cada caractere no nome teria 26 possibilidades diferentes - as letras do alfabeto inglês - enquanto o comprimento variável das entradas também atrasaria a pesquisa.
Por outro lado, a aplicação de uma função hash tornaria a vida do computador muito mais fácil. Transformar cada sequência de texto em uma série de números simplificaria a pesquisa, porque o computador só teria dez possibilidades para verificar cada caractere: dígitos “0” a “9.” O comprimento fixo da série numérica também ajuda o computador a fazer sua trabalho com mais eficiência.
Em um banco de dados com uma função de hash aplicada, todas as entradas têm um número único e correspondente. Isso é chamado de chave de hash. Nesse caso, quando você faz uma pesquisa, o computador aplica primeiro a função hash à entrada que você escreveu, como "John Doe". Isso resulta em um valor numérico, por exemplo "456789". O computador pode rapidamente corresponda esse resultado à chave de hash correspondente à entrada correta.
Hashes também funcionam como assinaturas digitais. Por exemplo, um remetente, Robert, deseja enviar um documento para alguém e a destinatária, Mary, quer garantir que o documento não tenha sido adulterado durante o percurso. O remetente, Robert, só precisa executar o documento através de uma função hash, o que resulta em um valor numérico. Robert então criptografa a chave de hash e envia o documento junto com a chave criptografada.
Maria recebe os dois itens e descriptografa a chave de hash. Agora ela pode ver o valor numérico que resultou no documento antes de ser enviado. Para verificar se o documento em suas mãos é exatamente o mesmo, ela executa o documento através de uma função de hash em seu computador. Por fim, ela compara as duas chaves. Se forem iguais, o documento não foi alterado a caminho do destinatário.
Existem muitas funções hash diferentes, cada uma com suas próprias fórmulas matemáticas. Para que uma função hash funcione, ela deve minimizar qualquer colisão, o que ocorre quando duas entradas do banco de dados têm a mesma chave hash. As funções de hash também devem ser unidirecionais. Isso significa que você pode produzir uma chave a partir de uma entrada ou documento do banco de dados, mas não o contrário. Em outras palavras, você não pode "fazer engenharia reversa" do documento original a partir de sua chave de hash.