Python program za pronalaženje hasha datoteke

U ovom ćete članku naučiti pronaći heš datoteke i prikazati ga.

Da biste razumjeli ovaj primjer, trebali biste imati znanje o sljedećim temama programiranja na Pythonu:

  • Python funkcije
  • Python korisnički definirane funkcije
  • Ulaz / izlaz datoteke Python

Hash funkcije uzimaju proizvoljnu količinu podataka i vraćaju bitni niz fiksne duljine. Izlaz funkcije naziva se sažetka poruke.

Oni se široko koriste u kriptografiji u svrhe provjere autentičnosti. Postoji mnogo funkcija raspršivanja poput MD5, SHA-1 itd. Pogledajte ovu stranicu da biste saznali više o raspršivanju funkcija u kriptografiji.

U ovom ćemo primjeru ilustrirati kako heširati datoteku. Upotrijebit ćemo SHA-1 algoritam za raspršivanje. Sažetak SHA-1 dug je 160 bita.

Podatke iz datoteke ne unosimo odjednom, jer su neke datoteke vrlo velike da bi se odjednom stale u memoriju. Razbijanje datoteke na male dijelove učinit će procesnu memoriju učinkovitom.

Izvorni kod za pronalaženje hasha

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

Izlaz

 633d7356947eec543c50b76a1852f92427f4dca9 

U ovom programu datoteku otvaramo u binarnom načinu. Funkcije raspršivanja dostupne su u hashlibmodulu. Petlju vršimo do kraja datoteke pomoću whilepetlje. Po dolasku na kraj dobivamo objekt praznih bajtova.

U svakoj iteraciji iz datoteke čitamo samo 1024 bajta (ovu vrijednost možemo promijeniti prema našoj želji) i ažuriramo funkciju raspršivanja.

Na kraju, hexdigest()metodom vraćamo sažetu poruku u heksadecimalnom predstavljanju .

Zanimljivi članci...