Programa Python para encontrar hash de archivo

En este artículo, aprenderá a encontrar el hash de un archivo y a mostrarlo.

Para comprender este ejemplo, debe tener el conocimiento de los siguientes temas de programación de Python:

  • Funciones de Python
  • Funciones definidas por el usuario de Python
  • E / S de archivos de Python

Las funciones hash toman una cantidad arbitraria de datos y devuelven una cadena de bits de longitud fija. La salida de la función se denomina mensaje de resumen.

Se utilizan ampliamente en criptografía con fines de autenticación. Hay muchas funciones hash como MD5, SHA-1, etc. Consulte esta página para saber más sobre las funciones hash en criptografía.

En este ejemplo, ilustraremos cómo aplicar un hash a un archivo. Usaremos el algoritmo hash SHA-1. El resumen de SHA-1 tiene 160 bits de longitud.

No alimentamos todos los datos del archivo a la vez, porque algunos archivos son muy grandes para caber en la memoria todos a la vez. Dividir el archivo en trozos pequeños hará que la memoria del proceso sea eficiente.

Código fuente para encontrar 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) 

Salida

 633d7356947eec543c50b76a1852f92427f4dca9 

En este programa, abrimos el archivo en modo binario. Las funciones hash están disponibles en el hashlibmódulo. Realizamos un bucle hasta el final del archivo usando un whilebucle. Al llegar al final, obtenemos un objeto de bytes vacío.

En cada iteración, solo leemos 1024 bytes (este valor se puede cambiar según nuestro deseo) del archivo y actualizamos la función hash.

Finalmente, devolvemos el mensaje de resumen en representación hexadecimal usando el hexdigest()método.

Articulos interesantes...