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 hashlib
modulu. Petlju vršimo do kraja datoteke pomoću while
petlje. 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 .