Calcolare il checksum di un file

calcola la somma di controllo (checksum) di un file in MD5, SHA-1, SHA-256 o SHA-512. Utile per verificare l'integrità di un download o rilevare una manomissione

Cos'è un checksum?

Un checksum (somma di controllo, a volte scritto chksum) è un'impronta digitale unica calcolata a partire dal contenuto di un file tramite un algoritmo di hash. Questa impronta, o fingerprint, è generalmente rappresentata da una stringa esadecimale di lunghezza fissa.

La proprietà fondamentale di un buon algoritmo di hash è l'effetto valanga: qualsiasi modifica del file sorgente, anche di un solo bit, produce un checksum radicalmente diverso. Due file di contenuto strettamente identico producono sempre lo stesso checksum, indipendentemente dal nome del file, dalla data di modifica o dal sistema operativo.

Il checksum serve principalmente a verificare l'integrità di un file: se l'impronta ricalcolata localmente corrisponde a quella annunciata dall'editore, il file è intatto. Altrimenti, è stato alterato, corrotto in transito, o modificato.

A cosa serve concretamente?

  • Verificare l'integrità di un download: un'ISO Linux (Debian, Ubuntu, Fedora, Arch), un'immagine Docker, un installer Windows o un archivio open source pubblicano sistematicamente un checksum ufficiale. Ricalcolarlo localmente conferma che il file sia completo e non alterato.
  • Rilevare una corruzione in transito: un download interrotto, un settore di disco difettoso, una RAM instabile, un cavo di rete capriccioso, o una copia su chiavetta USB possono corrompere byte. Il checksum rivela immediatamente questi errori silenziosi.
  • Impronta di firma: confermare che un file provenga effettivamente dall'autore atteso quando il checksum è diffuso tramite un canale sicuro (HTTPS, firma GPG). È il meccanismo alla base dei repository di pacchetti Linux e degli app store.
  • Versioning e caching: Git identifica ogni commit, blob e albero tramite un hash SHA-1 (in migrazione verso SHA-256). I CDN e i bundler web (Webpack, Vite, esbuild) iniettano un hash nel nome del file (app.4a8f2c.js) per invalidare automaticamente la cache del browser durante un cambiamento.
  • Rilevamento di duplicati e deduplica: backup incrementali (Borg, Restic, rsync), filesystem (ZFS), e storage oggetto identificano i blocchi identici tramite il loro hash per memorizzare una sola copia.
  • Validazione di upload: un client invia il checksum atteso, il server lo ricalcola alla ricezione. AWS S3, per esempio, accetta un header Content-MD5 o x-amz-checksum-sha256 per rifiutare un upload corrotto.
  • Threat intelligence e antivirus: VirusTotal e gli editori di antivirus indicizzano i file malevoli tramite il loro hash SHA-256, il che permette un rilevamento senza trasmettere il binario completo.

Algoritmi supportati e differenze

  • MD5 (128 bit, 32 caratteri esadecimali): rapido, largamente diffuso, ma rotto crittograficamente. Le collisioni MD5 sono calcolabili in pochi secondi su hardware comune dal 2004. Da usare solo per la verifica di integrità non malevola (download contro un'interruzione di rete, backup locale). Proscritto per qualsiasi funzione di sicurezza, firma o autenticazione.
  • SHA-1 (160 bit, 40 caratteri esadecimali): deprecato per la crittografia dall'attacco SHAttered del 2017, che ha dimostrato una collisione reale tra due PDF distinti. Git lo usa ancora per default ma migra verso SHA-256. Non usarlo più per firmare o autenticare.
  • SHA-256 (256 bit, 64 caratteri esadecimali): standard moderno, membro della famiglia SHA-2. Base dei certificati TLS moderni, delle firme di pacchetti Linux (apt, dnf, pacman), di Bitcoin, e dei controlli di integrità ufficiali. Più lento di MD5 ma sicuro allo stato delle conoscenze attuali.
  • SHA-512 (512 bit, 128 caratteri esadecimali): variante 64-bit di SHA-2. Manipola parole di 64 bit nativamente, il che lo rende a volte più rapido di SHA-256 su CPU 64-bit. Impronta più lunga, margine di sicurezza superiore.
  • CRC32 (32 bit, 8 caratteri esadecimali): non crittografico, ultra-rapido, progettato specificamente per rilevare gli errori di trasmissione. Usato da Ethernet, ZIP, PNG, gzip. Non protegge dalla malevolenza: un attaccante può banalmente forgiare un file con lo stesso CRC32 di un altro. Adatto ai controlli hardware rapidi, non alla sicurezza.

Casi d'uso

  • Verificare un'ISO Linux: Debian, Ubuntu, Fedora e Arch pubblicano i SHA-256 e SHA-512 di ogni immagine ufficiale, spesso controfirmati in GPG.
  • Validare un binario firmato: confermare che un eseguibile scaricato da un mirror non sia stato sostituito con una versione modificata.
  • Confrontare due versioni: prima e dopo una modifica, un checksum identico prova l'identità bit per bit, senza dover diffondere i file.
  • Validazione di upload: il client invia un checksum, il server lo ricalcola alla ricezione per confermare l'assenza di corruzione.
  • Fingerprinting: rilevamento di bot o di file noti in basi di impronte (antivirus, threat intelligence, ricerca di duplicati).

Come usarlo

  1. Trascinate il file nella zona prevista, o usate il pulsante di selezione.
  2. Scegliete l'algoritmo: MD5, SHA-1, SHA-256, SHA-512 o CRC32.
  3. Il checksum viene mostrato, pronto da copiare.
  4. Confrontate il valore ottenuto con quello di riferimento (pubblicato dall'editore o conservato localmente).

Il calcolo avviene localmente nel vostro browser, senza invio del file a un server remoto. Il contenuto resta confidenziale.

Come verificare un download con checksum?

La procedura standard di verifica è la seguente:

  1. Il sito ufficiale pubblica il checksum atteso, per esempio d41d8cd98f00b204e9800998ecf8427e per MD5 o una stringa di 64 caratteri per SHA-256.
  2. Scaricate il file.
  3. Calcolate il suo checksum, sia con questo strumento, sia da riga di comando.
  4. Confrontate: se le due stringhe sono strettamente identiche, carattere per carattere, il file è intatto. Se differiscono, anche di un solo carattere, il file è corrotto o manomesso: non usatelo, riscaricatelo.

Da riga di comando su Linux:


# Calculer le checksum
md5sum fichier.iso
sha1sum fichier.iso
sha256sum fichier.iso
sha512sum fichier.iso
cksum fichier.iso          # CRC32 + taille

# Vérifier automatiquement depuis un fichier .sha256 publié par l'éditeur
sha256sum -c fichier.iso.sha256
# Affiche : "fichier.iso: OK" si le checksum correspond

Su macOS:


md5 fichier.iso
shasum -a 1 fichier.iso
shasum -a 256 fichier.iso
shasum -a 512 fichier.iso

# Vérification depuis un fichier de référence
shasum -a 256 -c fichier.iso.sha256

Su Windows (PowerShell):


Get-FileHash fichier.iso -Algorithm MD5
Get-FileHash fichier.iso -Algorithm SHA1
Get-FileHash fichier.iso -Algorithm SHA256
Get-FileHash fichier.iso -Algorithm SHA512

# Comparer à une valeur attendue
(Get-FileHash fichier.iso -Algorithm SHA256).Hash -eq "ABC123..."

Confronto rapido degli algoritmi

Algoritmo Dimensione Velocità Uso raccomandato
CRC32 32 bit Molto rapido Rilevamento di errori di rete o storage, non crittografico
MD5 128 bit Rapido Integrità non ostile solo, da evitare in sicurezza
SHA-1 160 bit Rapido Obsoleto, compatibilità vecchia (Git, vecchi pacchetti)
SHA-256 256 bit Moderata Standard attuale, verifica di integrità e firme
SHA-512 512 bit Rapido in 64 bit Verifica di integrità, margine di sicurezza superiore

FAQ

MD5 o SHA-256 per verificare la mia ISO?

SHA-256 per default. La quasi totalità delle distribuzioni Linux moderne pubblica SHA-256 e SHA-512, a volte a fianco di MD5 per compatibilità storica. Se l'editore pubblica solo MD5 e temete una compromissione, esigete SHA-256 o verificate la firma GPG del file dei checksum. Se temete solo una corruzione in download, MD5 basta tecnicamente.

Il checksum garantisce la sicurezza del mio file?

No, non da solo. Un checksum prova l'integrità, non l'autenticità. Se un attaccante controlla il server di download, può pubblicare un file modificato e il suo checksum modificato. La sicurezza reale viene da una firma digitale (GPG, code signing) che lega il checksum a una chiave privata conosciuta. Recuperate sempre il checksum tramite HTTPS o, meglio, tramite una firma GPG verificabile.

Il mio checksum non corrisponde, cosa fare?

Prima, verificate che stiate confrontando l'algoritmo giusto: un SHA-256 non può corrispondere a un SHA-1. Poi, ricominciate il download, idealmente da un altro mirror: la causa più frequente è un'interruzione di rete. Se lo scarto persiste dopo più tentativi, sospettate una compromissione del mirror: risalite alla sorgente ufficiale e verificate la firma GPG se esiste. Mai eseguire o usare il file finché il checksum non corrisponde.

Perché MD5 è deprecato?

MD5 soffre di collisioni pratiche: è possibile costruire due file diversi con esattamente lo stesso hash MD5 in pochi secondi. Questa proprietà viola la funzione stessa di un hash crittografico. Concretamente, un attaccante può creare un binario malevolo con lo stesso MD5 di un binario legittimo. SHA-1 soffre dello stesso problema dal 2017 (attacco SHAttered). Solo SHA-256, SHA-512 e le loro varianti restano considerate sicure nel 2026.

Differenza tra hash e checksum?

Un hash è il risultato generico di una funzione di hash. Un checksum è un hash usato specificamente per verificare l'integrità di un dato. Tutti i checksum sono hash, ma non tutti gli hash sono checksum: un hash di password (bcrypt, argon2) serve all'autenticazione, un hash in una tabella hash serve a indicizzare rapidamente. Il termine fingerprint o impronta è un sinonimo comune di checksum.

CRC32 basta per le mie esigenze?

CRC32 basta se cercate solo di rilevare una corruzione accidentale su un canale non ostile: trasferimento di rete interno, verifica di archivio ZIP, controllo di coerenza in memoria. Con soli 32 bit, due file casuali hanno circa 1 possibilità su 4 miliardi di avere lo stesso CRC32 per caso, il che è sufficiente per un rilevamento di errore. CRC32 è insufficiente non appena un attaccante può influenzare il contenuto: è banale forgiare un file con un CRC32 target. Per qualsiasi verifica di fronte a un rischio malevolo, usate SHA-256.

Perché il mio checksum differisce a seconda dell'OS?

Il checksum di uno stesso contenuto binario è identico ovunque. Se ottenete due risultati diversi, è che il file differisce realmente: fine riga (CRLF Windows contro LF Unix) dopo un trasferimento FTP in modalità testo, codifica del testo modificata all'apertura, metadati aggiunti dal sistema (risoluzione Spotlight macOS, attributi estesi), o ricompressione silenziosa da un client di trasferimento. Trasferite sempre in modalità binaria.

Checksum o firma digitale?

Un checksum prova che un file non sia stato alterato tra la pubblicazione e la ricezione, a condizione di recuperare il checksum tramite un canale sicuro. Una firma digitale (GPG, PGP, code signing Authenticode) prova in più l'identità dell'autore grazie a una chiave privata. La firma ingloba e rinforza il checksum: la pratica standard presso Debian, Tor, o Bitcoin Core è di firmare in GPG il file dei checksum, poi di usare questi checksum per verificare i binari.

Domande frequenti

Il file viene inviato su un server per calcolare il checksum?

No. Il calcolo si effettua interamente nel vostro browser grazie all'API Web Crypto e a routine JavaScript locali. Il contenuto del file non lascia la vostra macchina, il che permette di hashare in piena riservatezza documenti sensibili, archivi cifrati o dump di database. Questo approccio garantisce anche performance stabili, indipendenti dalla banda.

Quale dimensione di file posso hashare con questo strumento?

Il calcolo avviene in streaming per blocchi, quindi il limite dipende essenzialmente dalla memoria e dal tempo che il vostro browser può dedicare all'operazione. Qualche centinaio di megabyte passa senza difficoltà su una postazione standard. Per file di diversi gigabyte (ISO completa, dump voluminoso), preferite la riga di comando di sistema (sha256sum, Get-FileHash) che sfrutta meglio le risorse di disco e CPU.

Qual è la differenza tra hashare un file e hashare del testo?

L'algoritmo è rigorosamente lo stesso, cambia solo l'input. Per un testo, si hasha la sequenza di byte della stringa in una codifica data (tipicamente UTF-8). Per un file, si hasha il contenuto binario grezzo, byte per byte, inclusi gli eventuali header o metadati integrati. È per questo che un file di testo e il suo contenuto copiato in un form possono dare checksum diversi (BOM, fine riga, codifica).

Perché il checksum di un archivio ZIP varia a ogni creazione?

La maggior parte degli archiviatori (ZIP, TAR.GZ, 7z) memorizza metadati variabili come la data di creazione, l'ordine dei file o indicatori di compressione. Ricreare un archivio con lo stesso contenuto produce quindi un binario diverso e un checksum diverso. Per ottenere archivi riproducibili, usate strumenti come diffoscope, strip-nondeterminism o le opzioni --mtime e --sort=name di tar.

Esistono alternative più rapide di SHA-256 per verificare l'integrità?

Sì. BLAKE2 e BLAKE3 sono funzioni di hash crittografiche moderne, progettate per essere più rapide di SHA-256 offrendo un livello di sicurezza equivalente o superiore. BLAKE3 sfrutta particolarmente bene il parallelismo SIMD e multi-core, il che lo rende molto efficiente su file grandi. Per il puro rilevamento di errori non ostili, xxHash è imbattibile in velocità, ma resta non crittografico.

Posso confrontare due file senza calcolare il loro hash intero?

Per due file locali, un confronto binario diretto (cmp su Unix, fc /b su Windows) è più rapido che hashare entrambi. L'hash diventa utile quando i file non sono sulla stessa macchina, o quando si vuole conservare un'impronta corta senza tenere l'originale. Per controlli frequenti su grossi volumi, indicizzate gli hash in un database e confrontate le impronte piuttosto che i file completi.

Esempio di richiesta

curl -X POST https://cdrn.fr/api/v1/tools/hash-file-generator/execute \
  -F "file=@/path/to/file" \
  -F "algorithm=adler32"

Schema di input

Campo Tipo Richiesto Predefinito
file file
algorithm choice (adler32, crc32, crc32b, crc32c, fnv132, fnv164, fnv1a32, fnv1a64, gost, gost-crypto, haval128,3, haval128,4, haval128,5, haval160,3, haval160,4, haval160,5, haval192,3, haval192,4, haval192,5, haval224,3, haval224,4, haval224,5, haval256,3, haval256,4, haval256,5, joaat, md2, md4, md5, murmur3a, murmur3c, murmur3f, ripemd128, ripemd160, ripemd256, ripemd320, sha1, sha224, sha256, sha3-224, sha3-256, sha3-384, sha3-512, sha384, sha512, sha512/224, sha512/256, snefru, snefru256, tiger128,3, tiger128,4, tiger160,3, tiger160,4, tiger192,3, tiger192,4, whirlpool, xxh128, xxh3, xxh32, xxh64)

questo strumento si aspetta un file - utilizzare Content-Type multipart/form-data invece di application/json

Endpoint

  • GET https://cdrn.fr/api/v1/tools - elenca tutti gli strumenti disponibili
  • GET https://cdrn.fr/api/v1/tools/hash-file-generator - recupera lo schema di questo strumento
  • POST https://cdrn.fr/api/v1/tools/hash-file-generator/execute - esegue questo strumento con un payload JSON