Cookies de statistiques et de publicité
Nous utilisons des cookies de statistiques et de publicité, tous deux destinés à Google. Si vous refusez, rien ne change visiblement pour vous.Aller à la page de confidentialité
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.
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.
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.
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.
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.
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.
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.
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.
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 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.
À 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.
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.
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.
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é.
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.
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.