Esempio di codice Python che calcola l'hash di un file con l'algoritmo sha256 e lo confronta con una stringa data
Autore:[Antonio Gallonetto]
Calcolare l’hash di un file è particolarmente utile per verificarne l’integrità. Se sappiamo quale dovrebbe essere il suo valore hash e andiamo a calcolarlo, nel caso nel quale i valori non corrispondano sappiamo che il file è stato modificato.
L’algoritmo sha256 è tra i più diffusi.
Un esempio di un piccolo programma in Python che verifica l’integrità di un file attraverso questo algoritmo può essere il seguente
import hashlib
from pathlib import Path
fileToCalcHash = input("Inserisci nome del file da calcolare l'hash sha256: ")
fileToCalcHash=fileToCalcHash.rstrip()
pFile = Path(fileToCalcHash)
pFile=pFile.absolute()
calc_string = input("Inserisci l'hash da verificare: ")
with open(pFile,"rb") as f:
myFileRead = f.read()
calc_hash = hashlib.sha256(myFileRead).hexdigest();
if calc_hash.upper()==calc_string.upper():
print("L'hash calcolato e quello inserito sono uguali")
else:
print("L'hash inserito e quello del file non corrisponde")
print("Esecuzione Terminata")
La spiegazione del sorgente è la seguente:
- abbiamo bisogno di due librerie, hashlib per il calcolo dell’hash e pathlib per il percorso del file
- Chiediamo all’utente di inserire il percorso del file e l’hash che conosciamo di quel file
- rimuoviamo dalla stringa eventuali spazi bianchi dovuti ad esempio al trascinamento del file sulla shell interattiva di python
- Trasformiamo la stringa in un percorso assoluto
- Apriamo il file in sola lettura e in modalità binaria
- Calcoliamo l’hash sul contenuto del file letto
- Confrontiamo le due stringhe
- Se la stringa calcolata e quella inserita sono uguali il file non è stato modificato