Impronta di un file (checksum)
Trascina un file e ottieni MD5, SHA-1, SHA-256 e SHA-512. Incolla il valore pubblicato dal sito e ti dico subito se coincide, oppure metti un secondo file e scopri se sono davvero identici. Tutto nel browser, il file non viene caricato da nessuna parte.
oppure clicca per sceglierlo, resta sul tuo dispositivo
nessun file scelto
serve solo per sapere se due file sono identici
nessun file scelto
🔒 Il file viene letto dentro il browser, blocco per blocco, e non viene caricato su nessun server.
Come si usa
Trascina il file nel primo riquadro (oppure clicca per sceglierlo) e le impronte compaiono da sole, con la barra che avanza mentre il file viene letto. Se il sito da cui hai scaricato pubblica un valore di controllo, incollalo nel campo apposito e non serve altro: dalla lunghezza il tool capisce se è un MD5, uno SHA-1, uno SHA-256 o uno SHA-512, spunta da solo l'algoritmo giusto e risponde sì o no, così non devi confrontare 64 cifre con gli occhi. Puoi incollare anche la riga intera prodotta da sha256sum o certutil -hashfile, con il nome del file di fianco, e vanno bene sia le maiuscole sia le minuscole. Il secondo riquadro serve quando la domanda è un'altra, cioè se due file che hai già sul disco sono davvero lo stesso file.
Che cos'è un'impronta e da cosa ti protegge davvero
Una funzione di hash macina tutti i byte del file e restituisce sempre lo stesso numero di cifre, 32 per MD5 e 64 per SHA-256, che il file pesi 3 KB o 8 GB. Cambia un solo bit e l'impronta cambia per intero, perché circa metà delle cifre si ribalta (è il cosiddetto effetto valanga). Per questo il confronto delle impronte smaschera un download interrotto a metà, un byte storto su una chiavetta stanca o un backup copiato male, cioè guasti che a occhio non si vedono e che si pagano più tardi con un errore incomprensibile durante l'installazione. C'è però un limite da tenere a mente, perché l'impronta ti protegge dall'incidente e non da chi attacca: se qualcuno riesce a sostituire il file su un mirror, quasi sempre può cambiare anche la pagina che ne pubblica il valore. Per l'autenticità servono una firma digitale (per esempio GPG) oppure un valore preso da una fonte diversa e affidabile.
MD5 e SHA-1 sono rotti, e resta un motivo per tenerli
Di MD5 esistono collisioni dal 2004, trovate dal gruppo di Wang Xiaoyun, e di SHA-1 dal 2017, quando Google e il CWI di Amsterdam pubblicarono SHAttered, due PDF diversi con lo stesso SHA-1. Collisione vuol dire che si possono costruire apposta due file diversi con la stessa impronta, quindi nessuno dei due algoritmi prova più che un file sia l'originale. Restano invece perfettamente adatti alla domanda pratica di chi scarica, cioè se il file è arrivato tutto e senza errori, e servono perché è ancora quello il valore che moltissimi progetti pubblicano accanto ai loro file. Se accanto trovi anche uno SHA-256, usa quello.
Come sono calcolate qui, e cosa non riesce a fare
MD5, SHA-1 e SHA-256 sono scritti a mano in JavaScript dentro questa pagina, in versione incrementale: il file viene letto a blocchi da 4 MiB e ogni blocco alimenta lo stato interno dell'algoritmo, quindi nessuna copia intera del file finisce in memoria e la dimensione non è un problema. MD5 deve per forza essere fatto a mano, perché WebCrypto (il motore crittografico del browser) non lo espone. Lo SHA-512 invece fa eccezione: lavora su parole da 64 bit, che JavaScript non ha, quindi viene affidato proprio a WebCrypto, che però pretende tutto il file in memoria in una volta sola. Su file da parecchi gigabyte quella richiesta può fallire, e in quel caso il tool te lo dice e ti invita a togliere la spunta a SHA-512. Il tempo dipende solo dal tuo processore e cresce in proporzione ai byte, per questo alla fine trovi scritto quanti MiB al secondo sono stati macinati, e il pulsante Ferma interrompe subito un calcolo troppo lungo.
Errori tipici, e cosa fare quando non corrisponde
Il primo errore è confrontare le impronte a occhio, perché lo sguardo controlla l'inizio e la fine e salta il centro, ed è esattamente lì che si nasconde la differenza. Il secondo è credere che maiuscole e minuscole cambino qualcosa, mentre A e a sono la stessa cifra esadecimale. Il terzo riguarda il formato, perché alcuni progetti pubblicano il valore in base64 invece che in esadecimale (44 caratteri per uno SHA-256, spesso con un uguale finale) e qui viene riconosciuto e convertito. Ricorda poi che l'impronta di un archivio zip non è l'impronta dei file che contiene, e che due file di dimensione diversa sono già diversi senza calcolare niente. Se il valore non corrisponde, quasi sempre il download si è interrotto, quindi riscarica e riprova. Se sbaglia una seconda volta con la stessa impronta, il file sul server potrebbe essere davvero diverso da quello annunciato: non installarlo e cerca un mirror ufficiale.