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
- 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.
- Blocs. Le message complété est découpé en blocs de 512 bits.
- 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).
- 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
- Déterministe. Les mêmes octets donnent toujours le même hash, sur n'importe quel ordinateur.
- Taille fixe. Un mot de 5 octets et un fichier de 5 Go produisent tous deux 64 caractères hexadécimaux.
- Effet avalanche. Une infime modification de l'entrée change complètement la sortie.
- Résistance à la préimage. À partir d'un hash, il n'existe aucun moyen connu de trouver une entrée correspondante, sauf en devinant.
- Résistance aux collisions. Personne n'a jamais trouvé deux entrées différentes ayant le même hash 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é ?
- Téléchargements de logiciels. Les distributions Linux et de nombreuses applications publient les checksums SHA-256 de leurs installateurs, souvent dans un fichier
SHA256SUMS. - Certificats TLS. Le certificat qui sécurise un site HTTPS est le plus souvent signé sur un hash SHA-256, affiché comme « sha256WithRSAEncryption » ou « ecdsa-with-SHA256 ». Les principaux navigateurs ont cessé de faire confiance aux certificats signés en SHA-1 en 2017.
- Bitcoin. Les mineurs hachent les en-têtes de bloc avec SHA-256 appliqué deux fois (double SHA-256) et changent un nombre appelé nonce jusqu'à ce que le résultat passe sous une cible. Cette recherche constitue la preuve de travail.
- Git. Git identifie traditionnellement les commits et les fichiers par leur hash SHA-1. Depuis la version 2.29 (2020),
git init --object-format=sha256crée un dépôt qui utilise SHA-256 à la place. - HMAC-SHA256 et JWT. HMAC mélange une clé secrète au hash, si bien que seule une personne qui possède la clé peut produire une valeur valide. Les webhooks et les requêtes d'API sont souvent signés ainsi, et l'algorithme JWT HS256 correspond à HMAC avec SHA-256 ; le générateur HMAC le calcule. N'utilisez pas à la place un simple
SHA-256(key + message): il est vulnérable aux attaques par extension de longueur, que HMAC empêche.
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
- Copiez la valeur SHA-256 attendue depuis la page de téléchargement officielle ou le fichier de sommes de contrôle.
- Calculez le hash du fichier téléchargé.
- 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.
- Texte : il hache exactement ce que vous tapez, en UTF-8, et un compteur affiche le nombre d'octets, ce qui permet de repérer vite un espace ou un saut de ligne en trop.
- Fichier : le fichier est lu et haché localement avec la bibliothèque crypto-js, sans être envoyé.
- Vérification : collez la valeur publiée dans le champ « Hash attendu » et l'algorithme correspondant est marqué « Correspond ». La comparaison hexadécimale ignore la casse, les espaces et un préfixe
0x. - Sortie : hexadécimal (minuscules ou majuscules), Base64, Base64url ou binaire.
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.