Calculando o hash de strings em Python

Usamos o termo hashing para nos referirmos a uma técnica muito utilizada em programação, quando queremos garantir determinadas propriedades sobre os dados que estamos manipulando e transmitindo. Obter o hash de um conjunto de dados significa obter uma string de tamanho fixo que é calculada com base no conteúdo do conjunto de dados.

Por exemplo, o hash (calculado usando o algoritmo md5) da palavra “teste” é mostrado abaixo:

"teste" --> "1ceae7af21732ab80f454144a414f2fa"

Uma mínima modificação na string “teste” irá gerar um hash totalmente diferente:

"testa" --> "9dd18b1a48164eaec9979df1a6aa84aa"

O hashing é muito utilizado para verificar a integridade de um arquivo durante a transmissão deste pela rede. Ao disponibilizar um arquivo para download, uma empresa pode disponibilizar também o hash calculado sobre o arquivo. Assim, para ter certeza de que efetuou o download do arquivo correto (sem este ter sido corrompido), o usuário pode calcular o hash do arquivo recebido e comparar o hash calculado com o hash disponibilizado pela empresa. Se houverem diferenças entre os hashes, isso significa que o arquivo está corrompido.

hashlib

Python oferece um módulo chamado hashlib que fornece funções para cálculo de hash de dados. Como usá-lo?

import hashlib
h = hashlib.md5()
h.update("uma frase qualquer")
print h.hexdigest()

O código acima utiliza a função md5 para obter o hash da string “uma frase qualquer” e imprimí-lo utilizando o valor do hash obtido em hexadecimal. Além do md5, a hashlib implementa os seguintes algoritmos para cálculo de hash:

  • md5
  • sha1
  • sha224
  • sha256
  • sha384
  • sha512

Assim, para utilizar a função sha256, basta fazer:

import hashlib
h = hashlib.sha256()
h.update("uma frase qualquer")
print h.hexdigest()

Maiores informações podem ser obtidas na documentação oficial: http://docs.python.org/library/hashlib.html

2 comentários sobre “Calculando o hash de strings em Python

Deixar mensagem para Tiago de Almeida (@Tiagoamx) Cancelar resposta