Programma Python per trovare l'hash del file

In questo articolo imparerai a trovare l'hash di un file e visualizzarlo.

Per comprendere questo esempio, dovresti avere la conoscenza dei seguenti argomenti di programmazione Python:

  • Funzioni Python
  • Funzioni Python definite dall'utente
  • I / O di file Python

Le funzioni hash accettano una quantità arbitraria di dati e restituiscono una stringa di bit di lunghezza fissa. L'output della funzione è chiamato messaggio digest.

Sono ampiamente utilizzati in crittografia per scopi di autenticazione. Ci sono molte funzioni di hash come MD5, SHA-1 ecc. Fare riferimento a questa pagina per saperne di più sulle funzioni di hash in crittografia.

In questo esempio, illustreremo come eseguire l'hashing di un file. Useremo l'algoritmo di hashing SHA-1. Il digest di SHA-1 è lungo 160 bit.

Non alimentiamo i dati dal file tutti in una volta, perché alcuni file sono molto grandi per entrare in memoria tutti in una volta. Spezzare il file in piccoli pezzi renderà efficiente la memoria del processo.

Codice sorgente per trovare 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) 

Produzione

 633d7356947eec543c50b76a1852f92427f4dca9 

In questo programma, apriamo il file in modalità binaria. Le funzioni hash sono disponibili nel hashlibmodulo. Eseguiamo un ciclo fino alla fine del file utilizzando un whileciclo. Al raggiungimento della fine, otteniamo un oggetto byte vuoto.

In ogni iterazione, leggiamo solo 1024 byte (questo valore può essere modificato secondo il nostro desiderio) dal file e aggiorniamo la funzione di hashing.

Infine, restituiamo il messaggio digest in rappresentazione esadecimale utilizzando il hexdigest()metodo.

Articoli interessanti...