Calculateur SHA-256 et SHA-512

Calculez l'empreinte SHA-256 (64 caractères) ou SHA-512 (128 caractères) de n'importe quel fichier, directement dans votre navigateur.

CALCULATEUR_SHA-256

[1] SÉLECTIONNER FICHIER(S) À HACHER

Un fichier, plusieurs, ou deux à comparer.

[2] CHOISISSEZ VOTRE FONCTION DE HACHAGE

[3] LANCER LE PROCESSUS DE HACHAGE

SHA-256 en bref

SHA-256 appartient à la famille SHA-2, conçue par la NSA et publiée par le NIST en 2001. La famille a été normalisée dans FIPS 180-2, et sa version en vigueur est la norme FIPS 180-4. SHA-256 en est le membre le plus utilisé : il travaille sur des mots de 32 bits, traite des blocs de 512 bits en 64 tours, et produit une empreinte de 256 bits, soit 64 caractères hexadécimaux.

À ce jour, aucune collision SHA-256 n'a jamais été trouvée, et aucune attaque connue ne s'en approche. C'est la raison pour laquelle SHA-256 est devenu l'algorithme par défaut de la plupart des outils, de PowerShell à Docker. Le fichier vide sert souvent de test : son SHA-256 vaut e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855.

SORTIE : 256 bits — 64 caractères hexadécimaux

FAMILLE : SHA-2 (2001) — norme FIPS 180-4

ÉTAT : Recommandé — aucune collision connue

Ne le confondez pas avec SHA3-256 : SHA-3, normalisé en 2015 (FIPS 202), repose sur une construction entièrement différente, appelée Keccak. Les deux produisent 64 caractères, mais jamais les mêmes pour un même fichier.

Où vous croisez SHA-256 au quotidien

  • ›Sommes de contrôle de téléchargement. Les distributions Linux, les éditeurs de logiciels et les projets libres publient un fichier SHA256SUMS ou une valeur SHA-256 à côté de leurs archives et images ISO, souvent accompagnés d'une signature GPG.
  • ›Signature de code. Quand un éditeur signe un exécutable ou un paquet, c'est aujourd'hui en général l'empreinte SHA-256 du fichier qui est signée, pas le fichier lui-même. Au lancement, Windows recalcule cette empreinte avant d'afficher le nom de l'éditeur.
  • ›Certificats TLS. Le cadenas de votre navigateur repose sur des certificats signés avec SHA-256 (« sha256WithRSAEncryption » ou ECDSA avec SHA-256 dans le détail du certificat). Le navigateur affiche aussi une empreinte SHA-256 du certificat lui-même.
  • ›Bitcoin. Les en-têtes de bloc sont hachés deux fois de suite avec SHA-256 ; c'est ce calcul que les mineurs répètent sans fin pour la preuve de travail.
  • ›Images Docker et OCI. Une image est désignée par un « digest » de la forme sha256:…. docker pull nginx@sha256:… garantit de récupérer exactement ce contenu, quel que soit le tag.

Vérifier une image ISO avec un fichier SHA256SUMS

  1. Téléchargez l'image et le fichier de sommes depuis le site officiel du projet, et si possible sa signature (SHA256SUMS.gpg ou .asc).
  2. Ouvrez SHA256SUMS dans un éditeur de texte : chaque ligne contient une empreinte, deux espaces (ou un espace et un astérisque) puis un nom de fichier.
  3. Repérez la ligne qui porte exactement le nom de votre image : les fichiers de sommes listent souvent plusieurs variantes (bureau, serveur, architectures).
  4. Sélectionnez l'image dans le calculateur ci-dessus, laissez SHA-256 coché et collez la ligne entière dans le champ de vérification : seul le premier mot est pris en compte.
  5. Un message de correspondance confirme que le fichier est intact ; sinon, retéléchargez-le avant de l'utiliser.

La signature du fichier de sommes compte autant que la somme elle-même : si un pirate contrôle le serveur, il peut remplacer l'image et sa somme en même temps. Le guide de vérification des téléchargements détaille cette étape.

Le calculateur lit le fichier par morceaux, sans limite de taille : une image de plusieurs gigaoctets se vérifie sans la charger entièrement en mémoire et sans l'envoyer nulle part.

SHA-256 en ligne de commande

Windows

certutil -hashfile ubuntu.iso SHA256
Get-FileHash .\ubuntu.iso
(Get-FileHash .\ubuntu.iso).Hash -eq "COLLEZ_ICI_LA_VALEUR_PUBLIEE"

Get-FileHash utilise SHA-256 par défaut. La troisième ligne répond True ou False ; l'opérateur -eq de PowerShell ignore la casse, ce qui tombe bien ici.

macOS

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

Linux

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

L'option --ignore-missing évite une avalanche d'erreurs pour les variantes que vous n'avez pas téléchargées.

Docker

docker images --digests

Pièges propres à SHA-256

  • ›64 caractères ne veut pas dire SHA-256. SHA3-256, SHA-512/256 et BLAKE2s produisent aussi 64 caractères. Si la valeur ne correspond jamais, vérifiez quel algorithme l'éditeur a vraiment utilisé.
  • ›Préfixe à retirer. Dans sha256:4f2a…, seuls les caractères après les deux-points forment l'empreinte.
  • ›Valeur en Base64. L'intégrité des scripts web (attribut integrity="sha256-…") encode l'empreinte en Base64, sur 44 caractères terminés par « = ». C'est la même empreinte écrite autrement, pas une valeur hexadécimale.
  • ›Casse et espaces. Majuscules et minuscules sont équivalentes en hexadécimal ; les espaces ou sauts de ligne copiés depuis une page web, eux, faussent une comparaison faite à l'œil ou dans un tableur.
  • ›Le digest Docker et le fichier .tar. Le digest d'une image porte sur son manifeste. Hacher l'archive produite par docker save donne forcément une autre valeur.

SHA-512, le grand frère 64 bits

SHA-512 fait partie de la famille SHA-2 depuis son origine, au même titre que SHA-256, et il est défini dans la même norme, FIPS 180-4. La différence tient à la taille des briques : SHA-512 manipule des mots de 64 bits, lit le fichier par blocs de 1 024 bits et applique 80 tours par bloc, là où SHA-256 utilise des mots de 32 bits, des blocs de 512 bits et 64 tours.

Le résultat fait 512 bits, soit 128 caractères hexadécimaux : deux fois plus long qu'un SHA-256, quatre fois plus qu'un MD5. Pour un fichier vide, il commence par cf83e1357eefb8bd et se termine par a538327af927da3e.

SORTIE : 512 bits — 128 caractères hexadécimaux

MOTS : 64 bits — blocs de 1 024 bits, 80 tours

ÉTAT : Recommandé — aucune attaque pratique connue

SHA-512 : plus long, mais souvent plus rapide

C'est la surprise de SHA-512 : sur un processeur 64 bits, il traite fréquemment les gros fichiers plus vite que SHA-256. L'explication est arithmétique. Une addition ou une rotation sur 64 bits coûte à peu près autant qu'une opération sur 32 bits pour un tel processeur, et SHA-512 consomme 128 octets du fichier par bloc contre 64 pour SHA-256, avec seulement 80 tours au lieu de 64. Rapporté à l'octet, il fait donc moins de travail.

Deux nuances. Sur un processeur 32 bits ou un petit microcontrôleur, l'avantage s'inverse. Et de nombreux processeurs récents disposent d'instructions matérielles dédiées à SHA-256, ce qui peut redonner l'avantage à SHA-256 dans les logiciels qui les exploitent. Dans un navigateur, WebAssembly ne donne pas accès à ces instructions : le calcul se fait en logiciel, sur des entiers 64 bits, ce qui favorise plutôt SHA-512.

Le plus simple reste de mesurer sur votre propre machine : openssl speed sha256 sha512 affiche les débits des deux algorithmes, ou chronométrez le calculateur en haut de page sur un même gros fichier avec chacun des deux algorithmes. Votre fichier reste sur votre poste pendant ces essais.

SHA-384 et SHA-512/256 : les variantes tronquées

SHA-384 effectue exactement le même calcul que SHA-512, avec des valeurs initiales différentes, puis ne garde que 384 bits (96 caractères). On le rencontre dans TLS, par exemple dans la suite TLS_AES_256_GCM_SHA384 de TLS 1.3, et dans les exigences de la NSA pour les systèmes classifiés (suite CNSA). Le calculateur le propose directement.

SHA-512/256, ajouté en 2012 dans FIPS 180-4, applique la même recette pour obtenir 256 bits, donc 64 caractères. Il combine la vitesse de SHA-512 sur 64 bits et la taille de SHA-256. Comme SHA-384, et contrairement à SHA-256 et SHA-512, il résiste aux attaques par extension de longueur, ce qui intéresse les concepteurs de protocoles.

Erreur fréquente : couper un SHA-512 à 64 caractères ne donne pas un SHA-512/256. Les valeurs initiales diffèrent, le résultat aussi. Pour le calculer, utilisez shasum -a 512256 fichier ou openssl dgst -sha512-256 fichier.

Ni SHA-256 ni SHA-512 pour les mots de passe

Ni SHA-256 ni SHA-512 seuls ne conviennent pour stocker des mots de passe, malgré leur longueur. Une fonction de hachage de fichiers est conçue pour être rapide ; or un attaquant qui a volé une base d'empreintes profite de cette vitesse pour tester des milliards de mots de passe candidats. Un hachage de mots de passe doit au contraire être lent, salé et coûteux en mémoire.

Les recommandations actuelles, comme celles de l'OWASP, placent Argon2id en premier, puis scrypt, bcrypt et PBKDF2. Les empreintes $6$ du fichier /etc/shadow sous Linux utilisent SHA-crypt, un schéma qui applique SHA-512 des milliers de fois avec un sel : c'est déjà autre chose qu'un SHA-512 brut. Ce calculateur, lui, sert à vérifier des fichiers, pas à protéger des secrets.

Où l'on trouve SHA-512

  • ›dans les fichiers .sha512 publiés à côté des archives de nombreux projets de la fondation Apache, ou dans le fichier CHECKSUM.SHA512 des images FreeBSD ;
  • ›dans les signatures Ed25519 (RFC 8032), utilisées par OpenSSH ou par des outils de signature comme minisign et signify d'OpenBSD, qui emploient SHA-512 en interne ;
  • ›dans le champ integrity des fichiers package-lock.json de npm, sous la forme sha512-… encodée en Base64 ;
  • ›dans les procédures d'archivage où l'on préfère une marge de sécurité maximale, pour des fichiers conservés pendant des décennies.

SHA-512 en ligne de commande

Windows

certutil -hashfile sauvegarde.7z SHA512
Get-FileHash -Algorithm SHA512 .\sauvegarde.7z | Format-List

Format-List évite que PowerShell tronque la valeur de 128 caractères avec des points de suspension dans un tableau trop étroit.

macOS

shasum -a 512 sauvegarde.7z

Linux

sha512sum sauvegarde.7z
sha512sum -c sauvegarde.7z.sha512

Le format des fichiers .sha512 varie d'un projet à l'autre : certains ne contiennent que l'empreinte, sans nom de fichier. Si -c refuse le fichier, comparez simplement la valeur avec le calculateur.

Comparer 128 caractères sans erreur

  • ›Ne comparez pas à l'œil. Vérifier le début et la fin d'une si longue chaîne est tentant mais insuffisant ; collez la valeur attendue dans le champ de vérification et laissez la machine comparer.
  • ›Coupures de ligne. Une valeur de 128 caractères est souvent coupée en deux lignes sur une page web ou dans un PDF, parfois avec un tiret de césure. Recollez les morceaux et supprimez espaces et tirets.
  • ›Majuscules et minuscules. Elles n'ont aucune importance en hexadécimal ; le calculateur les traite comme identiques.
  • ›Base64 sur 88 caractères. Une valeur qui se termine par « == » et contient des lettres au-delà de f est un SHA-512 encodé en Base64, comme chez npm, pas un hexadécimal.
  • ›96 caractères. Si la valeur publiée a cette longueur, il s'agit d'un SHA-384 : sélectionnez-le dans le calculateur.

Pour aller plus loin

Questions fréquentes sur SHA-256 et SHA-512

Deux fichiers différents peuvent-ils avoir le même SHA-256 ?

En théorie oui, puisqu'il existe plus de fichiers possibles que d'empreintes. En pratique, personne n'en a jamais trouvé, et aucune méthode connue ne permet d'en fabriquer. Deux SHA-256 identiques signifient donc que les fichiers sont identiques.

Pourquoi le digest de mon image Docker ne correspond-il pas au SHA-256 du fichier .tar ?

Parce que le digest est calculé sur le manifeste de l'image, un petit document JSON qui référence les couches, et non sur une archive exportée. Pour comparer deux images, comparez leurs digests avec docker images --digests.

Le calcul d'un fichier de plusieurs gigaoctets est-il possible dans le navigateur ?

Oui. Le fichier est lu par tranches de 4 Mo et haché au fil de l'eau, donc sans limite de taille. La durée dépend surtout de la vitesse du disque ou de la clé USB qui contient le fichier.

SHA-256 et SHA3-256 sont-ils interchangeables ?

Non. Ce sont deux algorithmes distincts qui donnent des valeurs de même longueur mais toujours différentes. Une somme publiée en SHA3-256 ne peut être vérifiée qu'avec SHA3-256.

SHA-512 est-il plus sûr que SHA-256 ?

Sa marge théorique est plus grande, mais aucun des deux n'a de faiblesse pratique connue. Pour vérifier un fichier, ils offrent la même garantie ; choisissez celui que publie l'éditeur, ou SHA-512 si la vitesse sur de gros volumes vous importe.

Peut-on tronquer un SHA-512 pour obtenir un SHA-256 ?

Non. Les 64 premiers caractères d'un SHA-512 ne correspondent ni au SHA-256 ni au SHA-512/256 du même fichier, car ces algorithmes partent de valeurs initiales différentes. Il faut recalculer avec l'algorithme voulu.

Autres algorithmes