I denne artikkelen lærer du å finne hash til en fil og vise den.
For å forstå dette eksemplet, bør du ha kunnskap om følgende Python-programmeringsemner:
- Python-funksjoner
- Python brukerdefinerte funksjoner
- Python File I / O
Hash-funksjoner tar en vilkårlig mengde data og returnerer en bitstreng med fast lengde. Utgangen av funksjonen kalles fordøyelsesmeldingen.
De brukes mye i kryptografi for autentiseringsformål. Det er mange hashfunksjoner som MD5, SHA-1 osv. Se denne siden for å vite mer om hashfunksjoner i kryptografi.
I dette eksemplet vil vi illustrere hvordan du hash en fil. Vi vil bruke SHA-1 hashing-algoritmen. Fordøyelsen av SHA-1 er 160 bits lang.
Vi mater ikke dataene fra filen samtidig, fordi noen filer er veldig store for å passe i minnet samtidig. Å dele filen i små biter vil gjøre prosessminnet effektivt.
Kildekode for å finne hasj
# 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)
Produksjon
633d7356947eec543c50b76a1852f92427f4dca9
I dette programmet åpner vi filen i binær modus. Hash-funksjoner er tilgjengelige i hashlib
modulen. Vi sløyfer til slutten av filen ved hjelp av en while
sløyfe. Når vi når slutten, får vi tomme byteobjekter.
I hver iterasjon leser vi bare 1024 byte (denne verdien kan endres etter vårt ønske) fra filen og oppdaterer hashing-funksjonen.
Til slutt returnerer vi fordøyelsesmeldingen i heksadesimal representasjon ved hjelp av hexdigest()
metoden.