Programa Python para encontrar o hash do arquivo

Neste artigo, você aprenderá a localizar o hash de um arquivo e exibi-lo.

Para entender este exemplo, você deve ter conhecimento dos seguintes tópicos de programação Python:

  • Funções Python
  • Funções Python definidas pelo usuário
  • E / S de arquivo Python

As funções de hash pegam uma quantidade arbitrária de dados e retornam uma string de bits de comprimento fixo. A saída da função é chamada de mensagem de resumo.

Eles são amplamente usados ​​em criptografia para fins de autenticação. Existem muitas funções de hash como MD5, SHA-1 etc. Consulte esta página para saber mais sobre funções de hash em criptografia.

Neste exemplo, ilustraremos como hash um arquivo. Usaremos o algoritmo de hash SHA-1. O resumo do SHA-1 tem 160 bits.

Não alimentamos os dados do arquivo de uma só vez, porque alguns arquivos são muito grandes para caber na memória de uma vez. Dividir o arquivo em pequenos pedaços tornará a memória do processo eficiente.

Código-fonte para encontrar o Hash

 # Python rogram to find the SHA-1 message digest of a file # importing the hashlib module import hashlib def hash_file(filename): """"This function returns the SHA-1 hash of the file passed into it""" # make a hash object h = hashlib.sha1() # open file for reading in binary mode with open(filename,'rb') as file: # loop till the end of the file chunk = 0 while chunk != b'': # read only 1024 bytes at a time chunk = file.read(1024) h.update(chunk) # return the hex representation of digest return h.hexdigest() message = hash_file("track1.mp3") print(message) 

Resultado

 633d7356947eec543c50b76a1852f92427f4dca9 

Neste programa, abrimos o arquivo em modo binário. As funções de hash estão disponíveis no hashlibmódulo. Fazemos um loop até o final do arquivo usando um whileloop. Ao chegar ao fim, obtemos o objeto bytes vazios.

Em cada iteração, lemos apenas 1024 bytes (este valor pode ser alterado de acordo com nossa vontade) do arquivo e atualizamos a função de hash.

Finalmente, retornamos a mensagem de resumo em representação hexadecimal usando o hexdigest()método.

Artigos interessantes...