Calculer le checksum d'un fichier
- Tableau de bord
- Documentation
- API
Qu'est-ce qu'un checksum ?
Un checksum (somme de contrôle, parfois orthographié chksum) est une empreinte numérique unique calculée à partir du contenu d'un fichier par un algorithme de hachage. Cette empreinte, ou fingerprint, est généralement représentée par une chaîne hexadécimale de longueur fixe.
La propriété fondamentale d'un bon algorithme de hachage est l'effet d'avalanche : toute modification du fichier source, même d'un seul bit, produit un checksum radicalement différent. Deux fichiers de contenu strictement identique produisent toujours le même checksum, indépendamment du nom de fichier, de la date de modification ou du système d'exploitation.
Le checksum sert principalement à vérifier l'intégrité d'un fichier : si l'empreinte recalculée localement correspond à celle annoncée par l'éditeur, le fichier est intact. Sinon, il a été altéré, corrompu en transit, ou modifié.
À quoi ça sert concrètement ?
- Vérifier l'intégrité d'un téléchargement : une ISO Linux (Debian, Ubuntu, Fedora, Arch), une image Docker, un installeur Windows ou une archive open source publient systématiquement un checksum officiel. Le recalculer localement confirme que le fichier est complet et non altéré.
- Détecter une corruption en transit : un téléchargement coupé, un secteur disque défaillant, une RAM instable, un câble réseau capricieux, ou une copie sur clé USB peuvent corrompre des octets. Le checksum révèle immédiatement ces erreurs silencieuses.
- Empreinte de signature : confirmer qu'un fichier provient bien de l'auteur attendu lorsque le checksum est diffusé via un canal sûr (HTTPS, signature GPG). C'est le mécanisme à la base des dépôts de paquets Linux et des magasins d'applications.
- Versionning et caching : Git identifie chaque commit, blob et arbre par un hash SHA-1 (en migration vers SHA-256). Les CDN et bundlers web (Webpack, Vite, esbuild) injectent un hash dans le nom de fichier (
app.4a8f2c.js) pour invalider automatiquement le cache navigateur lors d'un changement. - Détection de duplicatas et déduplication : sauvegardes incrémentales (Borg, Restic, rsync), systèmes de fichiers (ZFS), et stockages objet identifient les blocs identiques par leur hash pour ne stocker qu'une seule copie.
- Validation d'upload : un client envoie le checksum attendu, le serveur le recalcule à réception. AWS S3, par exemple, accepte un en-tête
Content-MD5oux-amz-checksum-sha256pour rejeter un upload corrompu. - Threat intelligence et antivirus : VirusTotal et les éditeurs antivirus indexent les fichiers malveillants par leur hash SHA-256, ce qui permet une détection sans transmettre le binaire complet.
Algorithmes supportés et différences
- MD5 (128 bits, 32 caractères hexadécimaux) : rapide, largement diffusé, mais cassé cryptographiquement. Des collisions MD5 sont calculables en quelques secondes sur du matériel courant depuis 2004. À utiliser uniquement pour la vérification d'intégrité non malveillante (téléchargement contre une coupure réseau, sauvegarde locale). Proscrit pour toute fonction de sécurité, signature, ou authentification.
- SHA-1 (160 bits, 40 caractères hexadécimaux) : déprécié pour la cryptographie depuis l'attaque SHAttered de 2017, qui a démontré une collision réelle entre deux PDF distincts. Git l'utilise toujours par défaut mais migre vers SHA-256. Ne plus l'utiliser pour signer ou authentifier.
- SHA-256 (256 bits, 64 caractères hexadécimaux) : standard moderne, membre de la famille SHA-2. Base des certificats TLS modernes, des signatures de paquets Linux (apt, dnf, pacman), de Bitcoin, et des contrôles d'intégrité officiels. Plus lent que MD5 mais sûr en l'état des connaissances actuelles.
- SHA-512 (512 bits, 128 caractères hexadécimaux) : variante 64-bit de SHA-2. Manipule des mots de 64 bits nativement, ce qui le rend parfois plus rapide que SHA-256 sur CPU 64-bit. Empreinte plus longue, marge de sécurité supérieure.
- CRC32 (32 bits, 8 caractères hexadécimaux) : non cryptographique, ultra-rapide, conçu spécifiquement pour détecter les erreurs de transmission. Utilisé par Ethernet, ZIP, PNG, gzip. Ne protège pas contre la malveillance : un attaquant peut trivialement forger un fichier avec le même CRC32 qu'un autre. Adapté aux contrôles matériels rapides, pas à la sécurité.
Cas d'usage
- Vérifier une ISO Linux : Debian, Ubuntu, Fedora et Arch publient les SHA-256 et SHA-512 de chaque image officielle, souvent contresignés en GPG.
- Valider un binaire signé : confirmer qu'un exécutable téléchargé depuis un miroir n'a pas été remplacé par une version piégée.
- Comparer deux versions : avant et après une modification, un checksum identique prouve l'identité bit à bit, sans avoir à diffuser les fichiers.
- Validation d'upload : le client envoie un checksum, le serveur le recalcule à réception pour confirmer l'absence de corruption.
- Fingerprinting : détection de bots ou de fichiers connus dans des bases d'empreintes (antivirus, threat intelligence, recherche de doublons).
Comment l'utiliser
- Glissez-déposez le fichier dans la zone prévue, ou utilisez le bouton de sélection.
- Choisissez l'algorithme : MD5, SHA-1, SHA-256, SHA-512 ou CRC32.
- Le checksum s'affiche, prêt à être copié.
- Comparez la valeur obtenue avec celle de référence (publiée par l'éditeur ou conservée localement).
Le calcul se fait localement dans votre navigateur, sans envoi du fichier sur un serveur distant. Le contenu reste confidentiel.
Comment vérifier un téléchargement avec checksum ?
La procédure standard de vérification est la suivante :
- Le site officiel publie le checksum attendu, par exemple
d41d8cd98f00b204e9800998ecf8427epour MD5 ou une chaîne de 64 caractères pour SHA-256. - Téléchargez le fichier.
- Calculez son checksum, soit avec cet outil, soit en ligne de commande.
- Comparez : si les deux chaînes sont strictement identiques, caractère par caractère, le fichier est intact. Si elles diffèrent, même d'un seul caractère, le fichier est corrompu ou trafiqué : ne l'utilisez pas, retéléchargez-le.
En ligne de commande sous 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
Sous 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
Sous 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..."
Comparaison rapide des algorithmes
| Algorithme | Taille | Vitesse | Usage recommandé |
|---|---|---|---|
| CRC32 | 32 bits | Très rapide | Détection d'erreurs réseau ou stockage, non cryptographique |
| MD5 | 128 bits | Rapide | Intégrité non hostile uniquement, à éviter en sécurité |
| SHA-1 | 160 bits | Rapide | Obsolète, compatibilité ancienne (Git, vieux paquets) |
| SHA-256 | 256 bits | Modérée | Standard actuel, vérification d'intégrité et signatures |
| SHA-512 | 512 bits | Rapide en 64 bits | Vérification d'intégrité, marge de sécurité supérieure |
FAQ
MD5 ou SHA-256 pour vérifier mon ISO ?
SHA-256 par défaut. La quasi-totalité des distributions Linux modernes publie SHA-256 et SHA-512, parfois aux côtés de MD5 pour compatibilité historique. Si l'éditeur ne publie que MD5 et que vous craignez une compromission, exigez SHA-256 ou vérifiez la signature GPG du fichier de checksums. Si vous craignez juste une corruption en téléchargement, MD5 suffit techniquement.
Le checksum garantit-il la sécurité de mon fichier ?
Non, pas à lui seul. Un checksum prouve l'intégrité, pas l'authenticité. Si un attaquant contrôle le serveur de téléchargement, il peut publier un fichier modifié et son checksum modifié. La sécurité réelle vient d'une signature numérique (GPG, code signing) qui lie le checksum à une clé privée connue. Récupérez toujours le checksum via HTTPS ou, mieux, via une signature GPG vérifiable.
Mon checksum ne correspond pas, que faire ?
D'abord, vérifiez que vous comparez le bon algorithme : un SHA-256 ne peut pas correspondre à un SHA-1. Ensuite, recommencez le téléchargement, idéalement depuis un autre miroir : la cause la plus fréquente est une coupure réseau. Si l'écart persiste après plusieurs essais, suspectez une compromission du miroir : remontez à la source officielle et vérifiez la signature GPG si elle existe. Ne jamais exécuter ou utiliser le fichier tant que le checksum ne correspond pas.
Pourquoi MD5 est-il déprécié ?
MD5 souffre de collisions pratiques : il est possible de construire deux fichiers différents ayant exactement le même hash MD5 en quelques secondes. Cette propriété viole la fonction même d'un hash cryptographique. Concrètement, un attaquant peut créer un binaire malveillant ayant le même MD5 qu'un binaire légitime. SHA-1 souffre du même problème depuis 2017 (attaque SHAttered). Seuls SHA-256, SHA-512 et leurs variantes restent considérés sûrs en 2026.
Différence entre hash et checksum ?
Un hash est le résultat générique d'une fonction de hachage. Un checksum est un hash utilisé spécifiquement pour vérifier l'intégrité d'une donnée. Tous les checksums sont des hashs, mais tous les hashs ne sont pas des checksums : un hash de mot de passe (bcrypt, argon2) sert à l'authentification, un hash dans une table de hachage sert à indexer rapidement. Le terme fingerprint ou empreinte est un synonyme courant de checksum.
CRC32 suffit-il pour mes besoins ?
CRC32 suffit si vous cherchez uniquement à détecter une corruption accidentelle sur un canal non hostile : transfert réseau interne, vérification d'archive ZIP, contrôle de cohérence en mémoire. Avec seulement 32 bits, deux fichiers aléatoires ont environ 1 chance sur 4 milliards d'avoir le même CRC32 par hasard, ce qui est suffisant pour une détection d'erreur. CRC32 est insuffisant dès qu'un attaquant peut influencer le contenu : il est trivial de forger un fichier avec un CRC32 cible. Pour toute vérification face à un risque malveillant, utilisez SHA-256.
Pourquoi mon checksum diffère-t-il selon l'OS ?
Le checksum d'un même contenu binaire est identique partout. Si vous obtenez deux résultats différents, c'est que le fichier diffère réellement : fins de ligne (CRLF Windows contre LF Unix) après un transfert FTP en mode texte, encodage du texte modifié à l'ouverture, métadonnées ajoutées par le système (résolution Spotlight macOS, attributs étendus), ou recompression silencieuse par un client de transfert. Toujours transférer en mode binaire.
Checksum ou signature numérique ?
Un checksum prouve qu'un fichier n'a pas été altéré entre la publication et la réception, à condition de récupérer le checksum par un canal sûr. Une signature numérique (GPG, PGP, code signing Authenticode) prouve en plus l'identité de l'auteur grâce à une clé privée. La signature englobe et renforce le checksum : la pratique standard chez Debian, Tor, ou Bitcoin Core est de signer en GPG le fichier de checksums, puis d'utiliser ces checksums pour vérifier les binaires.
Questions fréquentes
Le fichier est-il envoyé sur un serveur pour calculer le checksum ?
Non. Le calcul s'effectue intégralement dans votre navigateur grâce à l'API Web Crypto et à des routines JavaScript locales. Le contenu du fichier ne quitte pas votre machine, ce qui permet de hacher en toute confidentialité des documents sensibles, des archives chiffrées ou des dumps de base de données. Cette approche garantit aussi des performances stables, indépendantes de la bande passante.
Quelle taille de fichier puis-je hacher avec cet outil ?
Le calcul se fait en streaming par blocs, donc la limite dépend essentiellement de la mémoire et du temps que votre navigateur peut consacrer à l'opération. Quelques centaines de mégaoctets passent sans difficulté sur un poste standard. Pour des fichiers de plusieurs gigaoctets (ISO complète, dump volumineux), préférez la ligne de commande système (sha256sum, Get-FileHash) qui exploite mieux les ressources disque et CPU.
Quelle est la différence entre hacher un fichier et hacher du texte ?
L'algorithme est rigoureusement le même, seule l'entrée change. Pour un texte, on hache la séquence d'octets de la chaîne dans un encodage donné (typiquement UTF-8). Pour un fichier, on hache le contenu binaire brut, octet par octet, y compris les éventuels en-têtes ou métadonnées intégrés. C'est pour cela qu'un fichier texte et son contenu copié dans un formulaire peuvent donner des checksums différents (BOM, fins de ligne, encodage).
Pourquoi le checksum d'une archive ZIP varie-t-il à chaque création ?
La plupart des archiveurs (ZIP, TAR.GZ, 7z) stockent des métadonnées variables comme la date de création, l'ordre des fichiers ou des indicateurs de compression. Recréer une archive avec le même contenu produit donc un binaire différent et un checksum différent. Pour obtenir des archives reproductibles, utilisez des outils comme diffoscope, strip-nondeterminism ou les options --mtime et --sort=name de tar.
Existe-t-il des alternatives plus rapides que SHA-256 pour vérifier l'intégrité ?
Oui. BLAKE2 et BLAKE3 sont des fonctions de hachage cryptographiques modernes, conçues pour être plus rapides que SHA-256 tout en offrant un niveau de sécurité équivalent ou supérieur. BLAKE3 exploite particulièrement bien le parallélisme SIMD et multi-cœur, ce qui le rend très efficace sur de gros fichiers. Pour la pure détection d'erreurs non hostile, xxHash est imbattable en vitesse, mais reste non cryptographique.
Puis-je comparer deux fichiers sans calculer leur hash entier ?
Pour deux fichiers locaux, une comparaison binaire directe (cmp sous Unix, fc /b sous Windows) est plus rapide que de hacher les deux. Le hash devient utile quand les fichiers ne sont pas sur la même machine, ou quand on veut conserver une empreinte courte sans garder l'original. Pour des contrôles fréquents sur de gros volumes, indexez les hashs dans une base et comparez les empreintes plutôt que les fichiers complets.
Exemple de requête
curl -X POST https://cdrn.fr/api/v1/tools/hash-file-generator/execute \
-F "file=@/path/to/file" \
-F "algorithm=adler32"
Schéma d'entrée
| Champ | Type | Requis | Défaut |
|---|---|---|---|
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) | ✓ | – |
cet outil attend un fichier - utilisez Content-Type multipart/form-data au lieu de application/json
Points d'accès
GET https://cdrn.fr/api/v1/tools- liste tous les outils disponiblesGET https://cdrn.fr/api/v1/tools/hash-file-generator- récupère le schéma de cet outilPOST https://cdrn.fr/api/v1/tools/hash-file-generator/execute- exécute cet outil avec un payload JSON