I denne artikel lærer du at finde hash af en fil og vise den.
For at forstå dette eksempel skal du have kendskab til følgende Python-programmeringsemner:
- Python-funktioner
- Python brugerdefinerede funktioner
- Python File I / O
Hash-funktioner tager en vilkårlig mængde data og returnerer en bitstreng med fast længde. Funktionens output kaldes fordøjelsesmeddelelsen.
De bruges i vid udstrækning i kryptografi til autentificeringsformål. Der er mange hashing-funktioner som MD5, SHA-1 osv. Se denne side for at vide mere om hash-funktioner i kryptografi.
I dette eksempel illustrerer vi, hvordan man hash en fil. Vi bruger SHA-1 hashing-algoritmen. Fordøjelsen af SHA-1 er 160 bits lang.
Vi føder ikke dataene fra filen på én gang, fordi nogle filer er meget store til at passe i hukommelsen på én gang. Opdeling af filen i små stykker gør proceshukommelsen effektiv.
Kildekode for at finde 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)
Produktion
633d7356947eec543c50b76a1852f92427f4dca9
I dette program åbner vi filen i binær tilstand. Hash-funktioner er tilgængelige i hashlib
modulet. Vi sløjfer til slutningen af filen ved hjælp af en while
sløjfe. Når vi når slutningen, får vi tomme byteobjekter.
I hver iteration læser vi kun 1024 bytes (denne værdi kan ændres efter vores ønske) fra filen og opdaterer hashing-funktionen.
Endelig returnerer vi fordøjelsesmeddelelsen i hexadecimal repræsentation ved hjælp af hexdigest()
metoden.