Security 6 Jul 2026 7 min de lecture

Qu'est-ce qu'une somme de contrôle ? Explication de MD5, SHA-1, SHA-256

Une somme de contrôle est une empreinte courte qui vous permet de vérifier qu'un fichier n'a pas été modifié ou corrompu. Comprendre quel algorithme de hachage utiliser — et les limites de MD5 — vous évite des erreurs de sécurité courantes.

Checksum guide: MD5, SHA-1, SHA-256 hash functions explained

Qu'est-ce qu'une somme de contrôle (checksum) ?

Une somme de contrôle est une chaîne de longueur fixe dérivée d'une donnée en la faisant passer par une fonction de hachage. La somme de contrôle agit comme une empreinte numérique : si ne serait-ce qu'un seul bit des données originales change, la somme de contrôle change complètement. Cela rend les sommes de contrôle utiles pour deux choses :

  • Vérification d'intégrité — ce fichier est-il arrivé sans corruption ni altération ?
  • Identité — ce fichier exact (ou cette donnée) est-il identique à une autre copie ?

Lorsque vous téléchargez un logiciel depuis un site officiel, la page de téléchargement affiche souvent un hash MD5 ou SHA-256. Après le téléchargement, vous calculez le hash de votre fichier local et vous comparez les deux. Si les résultats correspondent, le fichier est intact.

Comment fonctionne une fonction de hachage

Une fonction de hachage cryptographique prend une entrée de n'importe quelle longueur et produit un condensé de longueur fixe. Quatre propriétés définissent une bonne fonction de hachage :

  • Déterministe — la même entrée produit toujours la même sortie
  • Unidirectionnelle (One-way) — on ne peut pas inverser un hash pour retrouver l'entrée originale (dans un temps raisonnable)
  • Effet avalanche — changer un seul caractère dans l'entrée modifie environ la moitié des bits de sortie
  • Résistante aux collisions — il doit être informatiquement impossible de trouver deux entrées différentes produisant le même hash
Exemple — effet avalanche du SHA-256 :
SHA-256("hello") = 2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824
SHA-256("Hello") = 185f8db32921bd46d35e3a1a4e9a9b9c6a7e6a7d2d2c4e9d... (complètement différent)

MD5 — Rapide, familier, mais cassé pour la sécurité

MD5 (Message Digest Algorithm 5) produit un condensé de 128 bits (32 caractères hexadécimaux). Il a été conçu en 1991 et est devenu l'algorithme de somme de contrôle par défaut sur Internet pendant environ deux décennies.

Où MD5 est encore acceptable :

  • Vérifications d'intégrité non sécuritaires — vérifier qu'un transfert de gros fichier n'a pas été corrompu durant le transport
  • Déduplication — vérifier si deux fichiers sont identiques (comme un pré-contrôle rapide avant une comparaison octet par octet)
  • Clés de cache et ETags où les attaques par collision ne sont pas un problème

Où MD5 n'est pas acceptable :

  • Stockage de mots de passe — MD5 est extrêmement rapide, ce qui rend les attaques par force brute via GPU triviales. Des milliards de hashs MD5 par seconde sont réalisables avec du matériel grand public.
  • Signatures numériques — des attaques par collision MD5 ont été démontrées en pratique. Deux fichiers différents peuvent être conçus pour avoir le même hash MD5.
  • Empreintes de certificats — le même problème de collision s'applique.
Utiliser MD5 pour les mots de passe est une vulnérabilité critique. Si vous trouvez md5($password) dans un code hérité, remplacez-le par password_hash() en PHP ou bcrypt/Argon2 dans n'importe quel autre langage. MD5 n'est pas un algorithme de hachage de mots de passe — il n'a jamais été conçu pour être lent, et c'est cette lenteur qui rend le hachage des mots de passe sécurisé.

SHA-1 — Obsolète

SHA-1 produit un condensé de 160 bits (40 caractères hexadécimaux). Il a remplacé MD5 en tant qu'algorithme recommandé à la fin des années 1990 et a été largement utilisé dans les certificats SSL/TLS, les systèmes de contrôle de version et les vérifications d'intégrité de fichiers.

En 2017, l'équipe Project Zero de Google a démontré la première collision pratique SHA-1 (l'attaque "SHAttered"), nécessitant environ 6 500 années CPU équivalentes de calcul. Les principaux navigateurs et autorités de certification ont cessé d'accepter les certificats SHA-1 en 2017. Git utilise toujours le SHA-1 en interne pour les hashs de commit, mais ils sont en train de migrer vers le SHA-256 comme alternative optionnelle.

Pour les nouvelles applications, n'utilisez pas SHA-1. Utilisez plutôt SHA-256 ou SHA-512.

SHA-256 — Le standard actuel

SHA-256 fait partie de la famille SHA-2 conçue par la NSA et publiée en 2001. Il produit un condensé de 256 bits (64 caractères hexadécimaux). À ce jour, aucune attaque par collision pratique n'existe contre le SHA-256.

Utilisez SHA-256 pour :

  • Vérification d'intégrité de fichiers (téléchargements de logiciels, sauvegardes)
  • Signatures numériques (certificats TLS, signature de code)
  • Jetons d'authentification basés sur HMAC (HMAC-SHA256)
  • Blockchain et cryptomonnaies (le Bitcoin utilise le double SHA-256)
  • Hashs de commit Git en mode SHA-256
  • Signatures JWT (JSON Web Token) lors de l'utilisation de HS256 ou RS256

SHA-256 est le choix par défaut idéal pour presque toutes les applications nécessitant un hash sécurisé. En cas de doute, utilisez SHA-256.

SHA-512 — Quand vous avez besoin de plus

SHA-512 produit un condensé de 512 bits (128 caractères hexadécimaux). Il fait partie de la même famille SHA-2 et est tout aussi sécurisé. La principale différence pratique :

  • Sur les processeurs 64 bits, SHA-512 peut en réalité être plus rapide que SHA-256 car l'algorithme est optimisé pour des tailles de mots de 64 bits
  • Sur les systèmes et matériels 32 bits, SHA-256 est plus rapide
  • SHA-512 a une sortie plus grande, ce qui signifie un stockage et une transmission plus longs

Utilisez SHA-512 lorsque l'application nécessite un condensé plus grand ou lorsque vous utilisez un matériel où SHA-512 présente un avantage de performance. Pour la plupart des applications web, SHA-256 est suffisant.

Une note sur le hachage de mots de passe

Aucun des algorithmes ci-dessus ne doit être utilisé directement pour le stockage de mots de passe. MD5, SHA-1, SHA-256 et SHA-512 sont tous conçus pour être rapides — et la rapidité est précisément ce qu'il ne faut pas pour les mots de passe.

Le hachage des mots de passe doit être délibérément lent, afin qu'une base de données volée ne puisse pas être craquée rapidement. Utilisez des algorithmes de hachage de mots de passe dédiés :

  • bcrypt — est la norme depuis plus de 20 ans, supporté dans pratiquement toutes les langues
  • Argon2 (spécifiquement Argon2id) — vainqueur du Password Hashing Competition (2015), recommandé pour les nouvelles applications
  • scrypt — mémoire-hard, également un excellent choix

En PHP : password_hash($password, PASSWORD_ARGON2ID). En Node.js : utilisez le package bcryptjs ou argon2. Ceux-ci gèrent automatiquement la génération de sel (salt) et le réglage du facteur de travail.

Comment vérifier une somme de contrôle de fichier

Lorsque vous téléchargez un logiciel et que le site fournit un hash SHA-256 :

Sur macOS / Linux :
shasum -a 256 downloaded-file.zip
# compare output to the official hash
Sur Windows (PowerShell) :
Get-FileHash downloaded-file.zip -Algorithm SHA256

Alternativement, utilisez notre Générateur de Hash pour coller le contenu d'un fichier ou un texte et calculer les hashs MD5, SHA-1, SHA-256 ou SHA-512 directement dans votre navigateur — rien n'est envoyé à un serveur.

Générer MD5, SHA-256 et plus encore

Calculez n'importe quel hash (MD5, SHA-1, SHA-256, SHA-512) à partir de texte ou du contenu d'un fichier dans votre navigateur — sans téléchargement, sans serveur.