Qu'est-ce que SHA-256 ? Fonctionnement, MD5 vs SHA-256, checksum

SHA-256 est une fonction de hachage cryptographique qui transforme n'importe quelle entrée, d'une seule lettre à un fichier de plusieurs gigaoctets, en une valeur fixe de 256 bits, généralement écrite sous forme de 64 caractères hexadécimaux. Elle fait partie de la famille SHA-2, publiée par le NIST dans la norme FIPS 180-2 en 2002. La même entrée donne toujours le même hash, et on ne peut pas retrouver l'entrée à partir du hash.

Essayez gratuitement : Hachage de texte en ligne Gratuit, sans création de compte.

Alors, qu'est-ce que SHA-256 apporte concrètement ? Avant tout la preuve que des données n'ont pas changé : les sommes de contrôle de téléchargement, les certificats TLS, Git, Bitcoin et les requêtes d'API signées reposent dessus. Ce guide explique comment fonctionne SHA-256, ce qui distingue MD5 vs SHA-256, ce qu'est un checksum et comment vérifier un checksum SHA-256 sous Windows, macOS et Linux. Chaque hash ci-dessous a été calculé par programme et vérifié deux fois. Pour tester les exemples, collez-les dans le générateur de hash gratuit.

Qu'est-ce que SHA-256 ?

SHA signifie Secure Hash Algorithm (algorithme de hachage sécurisé). SHA-2 a été conçu par la NSA et normalisé par le NIST, d'abord dans FIPS 180-2 (2002) et aujourd'hui dans FIPS 180-4. La famille compte plusieurs membres, nommés d'après la taille de leur sortie : SHA-224, SHA-256, SHA-384 et SHA-512, ainsi que SHA-512/224 et SHA-512/256. SHA-256 est le plus utilisé.

Un hash fonctionne comme une empreinte digitale des données. Voici un exemple de hash SHA-256 pour le mot « hello » et pour une entrée vide :

SHA-256("hello") = 2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824
SHA-256("")      = e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855

Les deux résultats ont la même longueur, car la sortie fait toujours 256 bits. Cela représente 32 octets, et comme un chiffre hexadécimal contient 4 bits, il faut 256 ÷ 4 = 64 caractères hexadécimaux.

Le fonctionnement de SHA-256 en bref

  1. Remplissage. On ajoute au message un bit 1, puis des zéros, puis sa longueur d'origine sous forme de nombre de 64 bits, pour que le total soit un multiple de 512 bits.
  2. Blocs. Le message complété est découpé en blocs de 512 bits.
  3. Compression. Chaque bloc passe par 64 tours d'opérations simples sur des mots de 32 bits : rotations de bits, XOR, AND et addition modulo 2³². Ces tours mélangent le bloc dans un état interne de huit mots de 32 bits (8 × 32 = 256 bits).
  4. Sortie. Après le dernier bloc, l'état constitue le hash.

Chaque bloc modifie l'état de départ du bloc suivant ; une modification n'importe où dans l'entrée change donc le résultat.

Les propriétés clés de SHA-256

L'effet avalanche se voit facilement. « hello » et « Hello » diffèrent d'une lettre, et les lettres h (01101000) et H (01001000) ne diffèrent que d'un seul bit :

SHA-256("hello") = 2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824
SHA-256("Hello") = 185f8db32271fe25f561a6fc938b2e264306ec304eda518007d1764826381969

Les deux hashs diffèrent sur 125 de leurs 256 bits, proche de la moitié attendue pour une sortie aléatoire, et sur 61 des 64 caractères hexadécimaux.

Une limite : la résistance à la préimage protège les données imprévisibles, pas les chaînes courtes et faciles à deviner. Le hash de « hello » figure dans toutes les tables de correspondance en ligne, car n'importe qui peut hacher des mots courants et enregistrer les résultats.

Qu'est-ce qu'un checksum ?

Un checksum (somme de contrôle) est une valeur courte calculée à partir de données pour pouvoir vérifier plus tard si elles ont changé. Les sommes de contrôle simples comme CRC32, utilisées dans les fichiers ZIP et les paquets réseau, détectent les erreurs accidentelles, comme un téléchargement corrompu ou un disque défaillant, mais elles sont faciles à falsifier volontairement.

Utilisé comme checksum, SHA-256 protège aussi contre la falsification délibérée, car personne ne peut fabriquer un fichier modifié qui corresponde à la valeur d'origine. Une condition s'applique : le hash attendu doit provenir d'une source de confiance, comme le site HTTPS officiel du projet ou un fichier de sommes de contrôle signé. Un attaquant qui contrôle la page de téléchargement peut modifier à la fois le fichier et le hash publié.

Où SHA-256 est-il utilisé ?

MD5 vs SHA-256 (et SHA-1, SHA-512)

Algorithme Sortie Caractères hex Publication Niveau de sécurité
MD5 128 bits 32 1992 (RFC 1321) Cassé : collisions pratiques depuis 2004
SHA-1 160 bits 40 1995 (FIPS 180-1) Cassé : première collision publique en 2017
SHA-256 256 bits 64 2002 (FIPS 180-2) Sûr : aucune collision connue
SHA-512 512 bits 128 2002 (FIPS 180-2) Sûr : aucune collision connue

La même entrée avec les quatre :

MD5("hello")     = 5d41402abc4b2a76b9719d911017c592
SHA-1("hello")   = aaf4c61ddcc5e8a2dabede0f3b482cd9aea9434d
SHA-256("hello") = 2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824
SHA-512("hello") = 9b71d224bd62f3785d96d46ad3ea3d73319bfbc2890caadae2dff72519673ca72323c3d99ba5c11d7c7acc6e14b8c5da0c4663475c2e5c3adef46f73bcdec043

Qu'est-ce que MD5 ? MD5 est un hash plus ancien de 128 bits, datant de 1992. En 2004, une équipe menée par Xiaoyun Wang a montré comment construire deux entrées différentes ayant le même hash MD5, et des travaux ultérieurs ont rendu ces collisions rapides à calculer. MD5 ne doit pas être utilisé là où quelqu'un pourrait fabriquer volontairement un fichier correspondant.

SHA-1 a tenu plus longtemps. En février 2017, le CWI d'Amsterdam et Google ont annoncé SHAttered : deux fichiers PDF différents ayant le même hash SHA-1. Le NIST recommande de remplacer complètement SHA-1 d'ici le 31 décembre 2030.

SHA-256 ne présente aucune attaque pratique connue. Une recherche de collision par force brute demanderait environ 2¹²⁸ essais, bien au-delà de ce que peut faire un ordinateur actuel.

Dans le choix MD5 vs SHA-256, prenez donc SHA-256 pour tout ce qui touche à la sécurité. MD5 reste acceptable quand personne ne cherche à vous tromper, par exemple pour repérer une corruption accidentelle ou trouver des fichiers en double sur votre propre disque.

SHA-256 et SHA-512 sont tous deux sûrs ; SHA-256 est le choix par défaut le mieux pris en charge. SHA-3 (FIPS 202, 2015) est une conception distincte, normalisée comme alternative et non parce que SHA-2 aurait été cassé.

Hacher n'est pas chiffrer

Le chiffrement, comme AES, est réversible : avec la bonne clé, on retrouve les données d'origine. Un hash n'a ni clé ni chemin retour ; il fait toujours 256 bits, quelle que soit la taille de l'entrée, donc les données d'origine ne se trouvent pas dans la sortie. Les sites qui prétendent « déchiffrer SHA-256 » ne font que chercher des hashs de mots et de mots de passe courants calculés à l'avance.

Pourquoi SHA-256 seul ne convient pas aux mots de passe

SHA-256 est conçu pour être rapide, et c'est précisément le problème pour les mots de passe. Si une base de hashs SHA-256 de mots de passe fuite, les attaquants peuvent tester des milliards d'essais par seconde sur des cartes graphiques. Sans sel, deux utilisateurs ayant le même mot de passe obtiennent en outre le même hash.

Les mots de passe exigent une fonction de hachage lente et salée : Argon2id, scrypt ou bcrypt (ou PBKDF2 avec un grand nombre d'itérations). Elles rendent chaque essai coûteux. Pour générer ou vérifier un hash bcrypt, utilisez l'outil Bcrypt.

Comment vérifier un checksum SHA-256

  1. Copiez la valeur SHA-256 attendue depuis la page de téléchargement officielle ou le fichier de sommes de contrôle.
  2. Calculez le hash du fichier téléchargé.
  3. Comparez les 64 caractères, pas seulement les premiers. Majuscules et minuscules n'ont pas d'importance en hexadécimal.

Si les valeurs diffèrent, supprimez le fichier et téléchargez-le à nouveau depuis la source officielle.

Windows

Dans l'invite de commandes :

certutil -hashfile ubuntu.iso SHA256

Ajoutez toujours SHA256 : sans lui, certutil utilise SHA-1. Dans PowerShell, Get-FileHash utilise SHA-256 par défaut et peut faire la comparaison pour vous :

Get-FileHash .\ubuntu.iso
(Get-FileHash .\ubuntu.iso).Hash -eq "paste-the-expected-hash-here"

La deuxième ligne affiche True ou False ; -eq ignore la casse, donc la sortie en majuscules correspond à un checksum en minuscules.

macOS

shasum -a 256 ubuntu.iso
shasum -a 256 -c ubuntu.iso.sha256

La première ligne affiche le hash. La seconde le vérifie par rapport à un fichier de sommes de contrôle, qui contient le hash, deux espaces et le nom du fichier.

Linux

sha256sum ubuntu.iso
sha256sum -c SHA256SUMS --ignore-missing

Avec -c, sha256sum lit le fichier de sommes de contrôle et affiche ubuntu.iso: OK ou FAILED. --ignore-missing ignore les entrées des fichiers que vous n'avez pas téléchargés.

Un piège fréquent quand on hache du texte en ligne de commande : echo "hello" | sha256sum donne 5891b5b522d5df086d0ff0b110fbd9d21bb4fc7163af34d08286a2e846f6be03 et non la valeur 2cf24d… ci-dessus, car echo ajoute un saut de ligne. Utilisez printf 'hello' | sha256sum pour hacher exactement cinq octets.

Dans le navigateur

Le générateur de hash MD5 et SHA-256 calcule MD5, SHA1, SHA224, SHA256, SHA384, SHA512, Keccak-256 et RIPEMD160 en même temps, en mode Texte ou Fichier.

Deux limites : le fichier entier est d'abord chargé en mémoire, donc pour des ISO de plusieurs gigaoctets, les outils en ligne de commande ci-dessus sont un meilleur choix. Et la ligne intitulée SHA3 est Keccak-512 avec le remplissage d'origine, qui diffère de NIST SHA3-512.

FAQ

Peut-on déchiffrer ou inverser SHA-256 ?

Non. SHA-256 est une fonction à sens unique sans clé. Les « déchiffreurs SHA-256 » ne trouvent que des entrées déjà présentes dans leurs tables de correspondance, ce qui fonctionne pour des mots courants et des mots de passe faibles, mais pas pour des données aléatoires.

SHA-256 est-il toujours sûr ?

Oui. Aucune attaque pratique par collision ou par préimage n'est connue contre SHA-256, et le NIST l'approuve toujours. Même un grand ordinateur quantique utilisant l'algorithme de Grover ne ferait, en l'état des connaissances, que réduire l'effort de préimage d'environ 2²⁵⁶ à environ 2¹²⁸ opérations.

Pourquoi un hash SHA-256 fait-il 64 caractères ?

Le hash fait 256 bits. En hexadécimal, chaque caractère représente 4 bits, donc 256 ÷ 4 = 64 caractères. La même valeur correspond à 32 octets, ou 44 caractères en Base64.

Quelle est la différence entre SHA-2 et SHA-256 ?

SHA-2 est la famille de fonctions de hachage définie dans FIPS 180-4. SHA-256 en est un membre, aux côtés de SHA-224, SHA-384 et SHA-512. Quand un logiciel indique « SHA-2 » sans taille, il s'agit généralement de SHA-256.

Deux fichiers peuvent-ils avoir le même hash SHA-256 ?

En théorie oui, car il existe une infinité de fichiers possibles et seulement 2²⁵⁶ hashs possibles. En pratique, personne n'a jamais trouvé deux entrées différentes avec le même hash SHA-256 ; des hashs identiques sont donc considérés comme la preuve que les fichiers sont identiques.

Essayez gratuitement : Hachage de texte en ligne Gratuit, sans création de compte.