Program Python pentru a găsi Hash of File

În acest articol, veți învăța să găsiți hash-ul unui fișier și să-l afișați.

Pentru a înțelege acest exemplu, ar trebui să aveți cunoștințele următoarelor subiecte de programare Python:

  • Funcții Python
  • Funcții Python definite de utilizator
  • I / O fișier Python

Funcțiile Hash iau o cantitate arbitrară de date și returnează un șir de biți cu lungime fixă. Ieșirea funcției se numește mesaj digest.

Sunt utilizate pe scară largă în criptografie în scopuri de autentificare. Există multe funcții de hash precum MD5, SHA-1 etc. Consultați această pagină pentru a afla mai multe despre funcțiile de hash din criptografie.

În acest exemplu, vom ilustra cum să hash un fișier. Vom folosi algoritmul de hash SHA-1. Digestia SHA-1 are 160 de biți lungime.

Nu alimentăm datele din fișier dintr-o dată, deoarece unele fișiere sunt foarte mari pentru a se potrivi în memorie simultan. Spargerea fișierului în bucăți mici va face ca memoria procesului să fie eficientă.

Cod sursă pentru a găsi 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) 

Ieșire

 633d7356947eec543c50b76a1852f92427f4dca9 

În acest program, deschidem fișierul în modul binar. Funcțiile Hash sunt disponibile în hashlibmodul. Buclăm până la sfârșitul fișierului folosind o whilebuclă. Când ajungem la final, obținem obiectul octetului gol.

În fiecare iterație, citim doar 1024 octeți (această valoare poate fi modificată în funcție de dorința noastră) din fișier și actualizăm funcția de hash.

În cele din urmă, returnăm mesajul digest în reprezentare hexazecimală folosind hexdigest()metoda.

Articole interesante...