Générateur de hash SHA-256

Collez un texte et obtenez son SHA-256. C’est l’empreinte à prendre quand vous avez le choix : intacte, universellement prise en charge, et celle qui se trouve sous les certificats TLS, sous Subresource Integrity et sous tous les fichiers de verrouillage de dépendances que vous avez lus. Le calcul est fait par la cryptographie de votre navigateur, pas par un script que nous aurions écrit.

Résultat

La réponse apparaît ici pendant que vous écrivez.

  • Où cela s’exécute

    Rien n’est envoyé, puisqu’il n’y a pas de fichier : tout est calculé dans cette page.

  • Sans file d’attente et sans compte

    Il répond aussi vite que votre machine le permet, et ne demande jamais qui vous êtes.

  • Autant de fois que vous voulez

    Rien n’est compté ni plafonné : répondre à nouveau ne nous coûte rien.

Comment cela fonctionne

  1. Collez le texte dans le champ. L’empreinte apparaît pendant que vous tapez.
  2. Changez la casse si la valeur que vous comparez emploie l’autre.
  3. Copiez les soixante-quatre caractères. Rien n’a quitté votre machine.

La réponse par défaut, et pourquoi elle est méritée

SHA-256 n’a aucune collision pratique connue, aucun problème d’extension de longueur dans les usages courants, et une accélération matérielle sur pratiquement tous les processeurs fabriqués depuis dix ans. C’est ce qui signe les certificats, ce que Subresource Integrity place dans un attribut `integrity`, ce qu’enregistre un fichier de verrouillage, et ce sur quoi Bitcoin est construit.

Rien de tout cela n’est un argument de popularité. C’est un argument d’examen : un algorithme aussi largement déployé a reçu plus de tentatives de rupture que n’importe quelle solution de rechange, et il a tenu. Choisir quelque chose de moins courant par goût de l’originalité est la façon de se retrouver avec une primitive que personne n’a auditée.

Ici c’est la plateforme qui calcule, pas notre code

L’empreinte vient de `crypto.subtle`, la cryptographie du navigateur, implémentée dans le même code natif que celui qui vérifie les certificats. La page MD5 est l’exception sur ce site : elle est écrite à la main, parce que la norme Web Crypto refuse délibérément de proposer MD5.

Cette distinction mérite d’être dite plutôt que gommée. Une fonction de hachage écrite en JavaScript peut être correcte, et ce site teste la sienne contre le RFC 1321 — mais pour tout ce qui garde des propriétés de sécurité, la bonne réponse est celle que la plateforme livre déjà et maintient à jour.

Un hash n’est pas un chiffrement, et ce n’est pas un secret

Il n’y a pas de clé et rien à inverser. Une empreinte est une empreinte digitale : la même entrée la produit toujours, et une entrée différente ne la produit presque certainement pas. Vous ne pouvez pas récupérer l’entrée, et vous ne pouvez pas non plus la cacher en la hachant — tout ce qui est devinable, un attaquant peut le hacher lui-même et comparer.

C’est l’erreur qui se cache derrière beaucoup d’adresses électroniques et de numéros de téléphone hachés puis présentés comme des données anonymisées. Il n’y a qu’un nombre fini de numéros de téléphone français ; les hacher tous prend quelques minutes. Un hash n’anonymise rien qui provienne d’un ensemble petit ou énumérable, et le RGPD considère une telle donnée comme toujours personnelle.

Là où SHA-256 reste le mauvais outil

Les mots de passe, encore, et pour la même raison que MD5 : il est rapide. L’accélération matérielle le rend plus rapide encore, ce qui est excellent pour vérifier un certificat et exactement contraire à ce qu’il faut pour résister à une attaque par devinette. Le stockage de mots de passe veut bcrypt, scrypt ou Argon2, tous délibérément lents et réglables.

L’authentification de message est l’autre cas. Hacher un secret avec un message est un motif qui comporte de vrais pièges, et HMAC existe pour les éviter — c’est la construction à employer, et `crypto.subtle` la fournit. Une empreinte simple de « clé plus message » est une façon connue de se tromper.

Comparer deux empreintes, et les deux choses qui le cassent

L’encodage d’abord. Cette page hache des octets UTF-8, et un système qui a stocké le même texte dans un autre encodage produit une autre empreinte pour ce qui ressemble à la même chaîne. Le saut de ligne final ensuite : un fichier se termine généralement par un, un champ de saisie non, ce qui suffit à changer chacun des soixante-quatre caractères.

Les deux valent la peine d’être vérifiés avant de conclure à un défaut, parce qu’un hash n’accorde aucun crédit partiel. Deux empreintes coïncident entièrement ou n’ont rien en commun, il n’existe donc aucune gradation pour vous signaler que vous y êtes presque, et chaque échec de peu ressemble exactement à une divergence totale.

Lire la longueur comme un diagnostic

SHA-256 fait soixante-quatre caractères hexadécimaux, toujours, quelle que soit l’entrée. MD5 en fait trente-deux, SHA-1 quarante, SHA-512 cent vingt-huit. Compter les caractères d’une empreinte qu’on vous tend est la façon la plus rapide de savoir d’où elle vient quand la documentation ne le dit pas.

C’est aussi un contrôle rapide sur une colonne stockée. Un champ censé contenir du SHA-256 et qui contient quarante caractères contient du SHA-1, et il en contient parce que quelque chose en amont n’a jamais été mis à jour — un constat plus courant qu’il ne devrait l’être.

Ce que l’accélération matérielle change en pratique

Les jeux d’instructions SHA présents sur les processeurs récents calculent une empreinte plusieurs fois plus vite qu’une implémentation logicielle. Sur cette page, cela ne se remarque pas : le texte est court et le calcul se termine avant que la frappe suivante n’arrive.

Cela se remarque en revanche partout où le volume est grand — vérifier l’intégrité d’une arborescence de fichiers, indexer un dépôt, valider une chaîne de blocs. Et c’est précisément ce qui rend SHA-256 inadapté aux mots de passe : la même accélération qui sert la vérification sert l’attaquant, avec un budget matériel bien supérieur au vôtre.

SHA-2, SHA-3 et les noms qui se ressemblent

SHA-2 est la famille dont SHA-256 fait partie, aux côtés de SHA-224, SHA-384 et SHA-512. Quand une documentation écrit « SHA-2 » sans numéro, elle veut presque toujours dire SHA-256, puisque c’est celui qui sert.

SHA-3 est autre chose : une construction entièrement différente, choisie par concours en 2012, retenue comme rechange au cas où SHA-2 tomberait. Ce n’est pas un remplaçant et ce n’est pas plus sûr dans l’usage courant ; c’est une assurance. Tant que SHA-2 tient, changer pour SHA-3 ne fait que réduire le nombre de systèmes capables de lire ce que vous produisez.

À quoi sert la casse ici

À rien du point de vue de la valeur : minuscules et majuscules écrivent le même nombre, et tout ce qui lit de l’hexadécimal accepte les deux. Les minuscules sont ce que produisent `sha256sum` et l’outillage Unix, les majuscules ce que produisent beaucoup d’outils Windows et de vieilles documentations.

Le réglage existe parce que la comparaison, elle, se fait souvent sur des chaînes. Coller une empreinte en majuscules dans un système qui stocke des minuscules donne un échec parfaitement silencieux, où les deux valeurs sont visiblement le même nombre. Changer la casse ici évite d’avoir à le faire ailleurs, avec le risque de transformer un caractère au passage.

Générateur de hash SHA-256 : questions fréquentes

SHA-256 est-il sûr ?

Pour l’intégrité et l’empreinte, oui : il n’existe aucune collision pratique connue, et c’est ce sur quoi reposent les certificats, Subresource Integrity et les fichiers de verrouillage. Pour stocker des mots de passe, non, et pas parce qu’il serait faible : il est rapide, et un hash de mot de passe doit être délibérément lent.

Puis-je retrouver le texte d’origine à partir d’un SHA-256 ?

Pas en l’inversant. Mais hacher ne cache rien qui provienne d’un petit ensemble : un attaquant qui soupçonne votre entrée peut hacher sa supposition et comparer. Les adresses électroniques et les numéros de téléphone hachés ne sont pas anonymes, exactement pour cette raison.

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

SHA-2 est la famille et SHA-256 en est un membre, aux côtés de SHA-224, SHA-384 et SHA-512. Quand une documentation écrit SHA-2 sans numéro, elle veut presque toujours dire SHA-256, puisque c’est celui qui est réellement employé.

Vaudrait-il mieux prendre SHA-512 ?

Il n’y a aucune raison de sécurité de le faire. Il est plus rapide sur du matériel 64 bits et produit une empreinte plus longue, mais SHA-256 n’est pas cassé et il est pris en charge partout, et une empreinte plus longue n’est pas une garantie plus forte contre une attaque existante. Alignez-vous sur ce avec quoi vous devez vous entendre.

Mon texte est-il envoyé ?

Non. L’empreinte est calculée par la cryptographie de votre navigateur, dans cette page, et l’onglet réseau ne montrera rien qui transporte ce que vous avez tapé. Les valeurs que les gens hachent sont fréquemment des secrets ou des identifiants, c’est-à-dire exactement la catégorie qui ne doit pas voyager.

Autres outils