In dit artikel leert u de hash van een bestand te vinden en weer te geven.
Om dit voorbeeld te begrijpen, moet u kennis hebben van de volgende programmeeronderwerpen in Python:
- Python-functies
- Python door de gebruiker gedefinieerde functies
- Python-bestand I / O
Hash-functies nemen een willekeurige hoeveelheid gegevens en retourneren een bitstring met een vaste lengte. De uitvoer van de functie wordt het digest-bericht genoemd.
Ze worden veel gebruikt in cryptografie voor authenticatiedoeleinden. Er zijn veel hash-functies zoals MD5, SHA-1 enz. Raadpleeg deze pagina voor meer informatie over hash-functies in cryptografie.
In dit voorbeeld laten we zien hoe u een bestand kunt hashen. We zullen het SHA-1-hash-algoritme gebruiken. De samenvatting van SHA-1 is 160 bits lang.
We voeren de gegevens uit het bestand niet allemaal tegelijk in, omdat sommige bestanden erg groot zijn om in één keer in het geheugen te passen. Door het bestand in kleine stukjes te splitsen, wordt het procesgeheugen efficiënter.
Broncode om hash te vinden
# 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)
Uitvoer
633d7356947eec543c50b76a1852f92427f4dca9
In dit programma openen we het bestand in binaire modus. Hash-functies zijn beschikbaar in de hashlib
module. We lussen tot het einde van het bestand met behulp van een while
lus. Bij het bereiken van het einde krijgen we een leeg bytes-object.
In elke iteratie lezen we slechts 1024 bytes (deze waarde kan naar wens worden gewijzigd) uit het bestand en werken we de hashing-functie bij.
Ten slotte retourneren we het overzichtsbericht in hexadecimale weergave met behulp van de hexdigest()
methode.