Qu'est-ce qu'un checksum (somme de contrôle) ?
Un checksum, ou somme de contrôle, est une courte valeur calculée à partir d'un bloc de données, comme un fichier ou un paquet réseau, et stockée ou envoyée avec lui. En la recalculant plus tard et en comparant les deux valeurs, on voit si les données ont changé à cause d'une corruption ou d'une erreur de transmission.
Mis à jour le 24 septembre 2026
| Checksum | Envoyé | Reçu | Résultat |
|---|---|---|---|
| Somme des octets (mod 256) | 68 | 68 | Identique |
| CRC-32 | 777CB658 | 777CB658 | Identique |
Inverse un bit et les deux checksums changent. Échange deux caractères : tous les octets sont toujours là, donc leur somme reste la même. Seul CRC-32, qui dépend de l'ordre, s'en aperçoit.
Les distributions Linux comme Ubuntu et Debian publient un fichier nommé SHA256SUMS à côté de leurs images d'installation. Chaque ligne contient une chaîne de 64 caractères et un nom de fichier. Une fois le téléchargement terminé, tu lances une commande sur le fichier reçu. Si elle affiche la même chaîne, ses milliards d'octets sont tous arrivés intacts. Si un seul bit s'est inversé en chemin, la chaîne obtenue est complètement différente.
Cette chaîne est un checksum (somme de contrôle) : un petit résumé qui change quand les données changent.
Comment fonctionne un checksum, étape par étape
- L'émetteur applique un algorithme de checksum aux données, octet par octet, et obtient un court résultat.
- Le résultat voyage ou est stocké avec les données : dans l'en-tête d'un paquet réseau, dans un fichier ZIP à côté de chaque fichier compressé, ou sur une page de téléchargement.
- Le destinataire applique le même algorithme aux données qu'il a réellement reçues.
- Les deux résultats sont comparés. S'ils sont égaux, les données n'ont presque certainement pas changé. S'ils diffèrent, les données ont été abîmées, et le destinataire les rejette, les redemande ou affiche une erreur de checksum.
Un checksum ne fait que détecter les dégâts ; il ne peut pas dire quel octet a changé ni le réparer. Pour réparer, il faut un code correcteur d'erreurs, comme les codes de Reed-Solomon des CD et des QR codes.
Le checksum le plus simple additionne tous les octets et garde les 8 derniers bits du total. Lance ceci pour voir où cette idée fonctionne et où elle échoue :
original sum= 78 crc32=a1628836
flipped sum= 80 crc32=a597580b
swapped sum= 78 crc32=59dbf74b
Changer un caractère change la somme. Échanger deux caractères ne la change pas, car l'addition ne tient pas compte de l'ordre, donc la somme des octets valide un paiement de 10 au lieu de 100. CRC-32 (contrôle de redondance cyclique) traite les données comme un long nombre binaire et le divise par un polynôme fixe de 33 bits ; le reste de 32 bits dépend de la position de chaque bit, donc l'échange est détecté. La démo ci-dessus te permet d'essayer avec ton propre texte. CRC-32 détecte toute rafale d'erreurs d'une longueur allant jusqu'à 32 bits.
Algorithmes de checksum courants
| Algorithme | Taille | Où tu le rencontres |
|---|---|---|
| Bit de parité | 1 bit | Liaisons série, mémoire à parité |
| Chiffre de contrôle de Luhn | 1 chiffre | Numéros de carte bancaire, numéros IMEI |
| Somme de contrôle Internet | 16 bits | En-têtes IPv4, TCP et UDP |
| Adler-32 | 32 bits | Le format compressé zlib |
| CRC-32 | 32 bits | ZIP, gzip, PNG, trames Ethernet |
| MD5 | 128 bits | Anciennes pages de téléchargement, outils de recherche de doublons |
| SHA-256 | 256 bits | Téléchargements de logiciels, images Linux, Bitcoin |
Les cinq premiers détectent les accidents, pas les attaquants. Quelqu'un qui modifie un fichier peut ajuster quelques octets pour que son CRC-32 corresponde à nouveau. MD5 et SHA-256 sont des fonctions de hachage cryptographiques, conçues pour qu'il soit impossible en pratique de trouver deux entrées qui donnent la même sortie. MD5 a depuis été cassé (des collisions ont été publiées en 2004), tout comme SHA-1 (2017), donc les téléchargements sensibles pour la sécurité utilisent SHA-256 ou plus fort. MD5 détecte toujours très bien les corruptions accidentelles.
Comment vérifier un checksum
Sur ton propre ordinateur, chaque système d'exploitation a une commande intégrée :
# Windows (PowerShell)
Get-FileHash ubuntu.iso -Algorithm SHA256
# macOS
shasum -a 256 ubuntu.iso
# Linux
sha256sum ubuntu.iso
Compare la sortie avec la valeur de la page de téléchargement officielle ; les majuscules et les minuscules n'ont pas d'importance. En Python, hashlib fait la même vérification, en lisant le fichier par morceaux pour qu'un fichier de 6 Go n'ait jamais à tenir en mémoire :
a948904f2f0f479b8f8197694b30184b0d2ed1c1cd2a1ec0fb85d299a192a447
OK
Remplace hello world par hello World et relance : chaque caractère du checksum change, et la dernière ligne affiche Checksum mismatch.
Qu'est-ce qu'une erreur de checksum ?
Une erreur de checksum signifie que la vérification a échoué : la valeur calculée à partir des données que tu as ne correspond pas à la valeur stockée ou envoyée avec elles. Soit les données ont changé, soit c'est le checksum stocké qui a été abîmé. Le message et la solution dépendent de l'endroit où elle apparaît.
Erreur de checksum CMOS ou BIOS au démarrage
Le firmware d'un PC (BIOS ou UEFI) conserve ses réglages, comme l'ordre de démarrage et l'horloge, dans une petite mémoire maintenue en vie par une pile bouton, généralement une CR2032, quand l'ordinateur est débranché. Un checksum de ces réglages est stocké à côté d'eux. À chaque démarrage, le firmware le recalcule, et si les valeurs diffèrent, il affiche un message comme CMOS Checksum Error - Defaults Loaded et revient aux réglages d'usine.
La cause habituelle est une pile faible ou morte, surtout quand l'horloge se réinitialise aussi. Une coupure de courant pendant l'enregistrement des réglages, ou un effacement du CMOS avec un cavalier, a le même effet. Pour corriger :
- Ouvre l'écran de configuration (en général Suppr ou F2 pendant le démarrage du PC), règle la date, l'heure et les réglages que tu avais modifiés, puis enregistre et quitte (souvent F10). Si le message ne revient pas, c'était un événement ponctuel.
- S'il revient après chaque démarrage à froid, éteins, débranche l'ordinateur et remplace la pile CR2032.
- Si le message nomme le firmware lui-même, comme
BIOS ROM checksum errorouMain BIOS checksum error, l'image du firmware est endommagée. Les cartes mères équipées d'une puce BIOS de secours la restaurent automatiquement ; sur les autres, utilise la fonction de récupération du BIOS de la carte ou reflashe le firmware depuis le site du fabricant, sans couper le courant pendant la mise à jour.
Checksum qui ne correspond pas après un téléchargement
Le SHA-256 de ton fichier ne correspond pas à celui de la page de téléchargement. Le fichier est peut-être incomplet ou corrompu (une connexion interrompue, un disque plein), tu compares peut-être avec le checksum d'un autre fichier (une autre version ou une autre architecture de processeur), ou tu compares peut-être deux algorithmes différents : une valeur MD5 fait 32 caractères hexadécimaux, une valeur SHA-256 en fait 64. Plus rarement, le fichier a été falsifié.
Vérifie l'algorithme et le nom du fichier, puis télécharge à nouveau le fichier depuis le site officiel. Si une copie neuve venant de la source officielle ne correspond toujours pas, ne l'exécute pas. Les gestionnaires de paquets font cette vérification pour toi : pip s'arrête avec THESE PACKAGES DO NOT MATCH THE HASHES quand un paquet téléchargé diffère du hash épinglé.
Erreur de checksum dans une archive ZIP, RAR ou 7z
Les formats d'archive stockent un CRC-32 du contenu d'origine de chaque fichier. À l'extraction, l'outil le recalcule ; WinRAR signale une différence sous la forme Checksum error et 7-Zip sous la forme CRC Failed. Pour une archive chiffrée, un mauvais mot de passe produit le même message, car un mauvais mot de passe déchiffre des données en bouillie. Télécharge à nouveau l'archive, vérifie que toutes les parties d'une archive découpée (.part1.rar, .part2.rar) sont présentes et viennent du même envoi, et retape le mot de passe. La commande de réparation d'archive de WinRAR fonctionne mieux sur les archives créées avec un enregistrement de récupération, et l'option « Conserver les fichiers endommagés » garde tout ce qui a été extrait correctement.
Erreurs de checksum dans les jeux et les outils réseau
Les jeux comparent les checksums de leurs fichiers, donc une mise à jour partielle ou un fichier modifié fait échouer la vérification. Dans Steam, « Vérifier l'intégrité des fichiers du jeu » télécharge à nouveau chaque fichier dont le checksum ne correspond pas. Dans Wireshark, les avertissements de checksum sur les paquets envoyés par ton propre ordinateur ne sont généralement pas de vraies erreurs : la carte réseau remplit le checksum après que Wireshark a déjà capturé le paquet.
Idées reçues
- « Un checksum qui correspond prouve que le fichier est sûr. » Il prouve que le fichier correspond à la valeur publiée. Si un attaquant contrôle le site web, il peut changer les deux, et c'est pour cela que les projets signent aussi leurs fichiers de checksums avec une clé.
- « Un checksum peut réparer un fichier corrompu. » Il ne fait que détecter les dégâts. La solution, c'est d'obtenir une bonne copie.
- « Checksum et hash sont deux choses différentes. » Checksum décrit la tâche ; une fonction de hachage comme SHA-256 est un des outils qui peuvent l'accomplir.
Pour aller plus loin
Calcule les valeurs MD5, SHA-1 et SHA-256 de n'importe quel texte avec le générateur de hash. Les checksums travaillent sur des données brutes, donc qu'est-ce qu'un octet et qu'est-ce qu'un bit expliquent ce qui est réellement additionné. Une base de données utilise des checksums de pages pour détecter la corruption du disque, et la visualisation de la table de hachage montre un autre usage d'une courte valeur calculée à partir de données.
Questions fréquentes
SHA-256 est-il un checksum ?
Comment corriger une erreur de checksum ?
Qu'est-ce qui provoque une erreur de checksum ?
Pourquoi un checksum est-il nécessaire ?
Comment générer un checksum ?
sha256sum file sous Linux, shasum -a 256 file sur macOS ou Get-FileHash file dans Windows PowerShell. En Python, hashlib.sha256(data).hexdigest() donne un checksum SHA-256 et zlib.crc32(data) un CRC-32.