V tem članku se boste naučili poiskati zgoščeno datoteko in jo prikazati.
Če želite razumeti ta primer, morate poznati naslednje programske teme Python:
- Python funkcije
- Uporabniško določene funkcije Pythona
- I / O datoteke Python
Funkcije razpršitve sprejmejo poljubno količino podatkov in vrnejo bitni niz fiksne dolžine. Izhod funkcije se imenuje povzetek sporočila.
Veliko jih uporabljajo v kriptografiji za namene preverjanja pristnosti. Obstaja veliko funkcij zgoščevanja, kot so MD5, SHA-1 itd. Oglejte si to stran, če želite izvedeti več o zgoščevalnih funkcijah v kriptografiji.
V tem primeru bomo ponazorili, kako razpršiti datoteko. Uporabili bomo algoritem razprševanja SHA-1. Prebava SHA-1 je dolga 160 bitov.
Podatkov iz datoteke ne dovajamo naenkrat, ker so nekatere datoteke zelo velike, da jih lahko naenkrat shranimo v pomnilnik. Če datoteko razbijete na majhne koščke, bo pomnilnik procesa učinkovit.
Izvorna koda za iskanje 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)
Izhod
633d7356947eec543c50b76a1852f92427f4dca9
V tem programu datoteko odpremo v binarnem načinu. Funkcije razpršitve so na voljo v hashlib
modulu. Do konca datoteke zankamo z while
zanko. Ko dosežemo konec, dobimo objekt praznih bajtov.
V vsaki ponovitvi iz datoteke preberemo le 1024 bajtov (to vrednost je mogoče spremeniti glede na našo željo) in posodobimo funkcijo razprševanja.
Na koncu vrnemo povzetek sporočila v šestnajstiški predstavitvi z uporabo hexdigest()
metode.