Programme Python pour trouver le hachage du fichier

Dans cet article, vous apprendrez à trouver le hachage d'un fichier et à l'afficher.

Pour comprendre cet exemple, vous devez avoir la connaissance des sujets de programmation Python suivants:

  • Fonctions Python
  • Fonctions définies par l'utilisateur Python
  • E / S de fichier Python

Les fonctions de hachage prennent une quantité arbitraire de données et renvoient une chaîne de bits de longueur fixe. La sortie de la fonction est appelée le message de résumé.

Ils sont largement utilisés en cryptographie à des fins d'authentification. Il existe de nombreuses fonctions de hachage comme MD5, SHA-1, etc. Référez-vous à cette page pour en savoir plus sur les fonctions de hachage en cryptographie.

Dans cet exemple, nous illustrerons comment hacher un fichier. Nous utiliserons l'algorithme de hachage SHA-1. Le résumé de SHA-1 a une longueur de 160 bits.

Nous n'alimentons pas les données du fichier en une seule fois, car certains fichiers sont très volumineux pour tenir en mémoire en une seule fois. Diviser le fichier en petits morceaux rendra la mémoire de processus efficace.

Code source pour trouver le hachage

 # 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) 

Production

 633d7356947eec543c50b76a1852f92427f4dca9 

Dans ce programme, nous ouvrons le fichier en mode binaire. Les fonctions de hachage sont disponibles dans le hashlibmodule. Nous bouclons jusqu'à la fin du fichier en utilisant une whileboucle. En arrivant à la fin, nous obtenons un objet octets vide.

À chaque itération, nous ne lisons que 1024 octets (cette valeur peut être modifiée selon notre souhait) du fichier et mettons à jour la fonction de hachage.

Enfin, nous renvoyons le message de résumé en représentation hexadécimale à l'aide de la hexdigest()méthode.

Articles intéressants...