Outil d'identification de hash (recherche inverse) | Détection automatique de MD5, SHA-1, SHA-256, SHA-512, SHA-3, BCrypt, Argon2

Collez une chaîne ressemblant à un hash, et cet outil détermine quel algorithme — MD5, SHA-1, SHA-256, SHA-512, SHA-3, BCrypt ou Argon2 — l'a probablement généré, en se basant sur sa longueur, son jeu de caractères et son préfixe. Tout le traitement s'effectue entièrement dans le navigateur.

La valeur de hash elle-même n'enregistre pas le nom de l'algorithme utilisé pour la générer. Comme plusieurs algorithmes peuvent partager la même longueur de sortie, ce résultat est la « supposition la plus probable » basée sur la longueur, le jeu de caractères et le préfixe, et non une conclusion certaine à 100 %.

Deviner l'algorithme à partir de l'empreinte

L'empreinte ne porte nulle part le nom de l'algorithme qui l'a produite. On peut néanmoins le deviner, et les indices sont au nombre de trois : le nombre de caractères de la sortie (32 pour MD5, 40 pour SHA-1, 64 pour SHA-256 et 128 pour SHA-512), le type de caractères (hexadécimal ou Base64) et les préfixes tels que $2b$ ou $argon2id$. Cet outil détermine à partir de ces trois éléments l'algorithme le plus probable et affiche aussi le raisonnement qui l'a conduit à cette conclusion.

Il faut souligner qu'il s'agit d'une déduction et non d'un verdict. La raison en est que plusieurs algorithmes partagent la même longueur de sortie : une chaîne de 64 caractères hexadécimaux peut être du SHA-256, mais aussi bien du SHA3-256 ou du BLAKE2s, et l'apparence ne permet pas de les séparer. En revanche, les formats qui portent leurs paramètres à l'intérieur même de la chaîne, comme bcrypt et Argon2, se reconnaissent avec certitude grâce au préfixe. Toute l'analyse se déroule dans le navigateur, de sorte que la chaîne collée n'est jamais envoyée à un serveur.

Comment identifier une empreinte

  1. Collez la chaîne de l'empreinte Les espaces en début et en fin sont ignorés, vous pouvez donc la copier telle quelle depuis un journal.
  2. Lisez le résultat Les algorithmes candidats apparaissent classés de la plus forte à la plus faible probabilité.
  3. Vérifiez la longueur et le jeu de caractères Le fondement est affiché également, pour que vous compreniez pourquoi ce candidat est proposé.
  4. Regardez s'il y a un préfixe Si la chaîne commence par $, les candidats se réduisent pratiquement à un seul.

Astuces pour en tirer le meilleur parti

  • L'identification se base uniquement sur la longueur, le jeu de caractères (hexadécimal ou Base64) et le préfixe comme indices ; elle ne recalcule pas réellement le hash pour le vérifier. Elle se contente de montrer les candidats déductibles du format.
  • BCrypt ($2a$/$2b$/$2y$) et Argon2 ($argon2id$, etc.) intègrent directement le nom de l'algorithme et les paramètres dans le préfixe, ce qui permet une identification à haute confiance.
  • Une chaîne hexadécimale de 64 caractères correspond le plus souvent à SHA-256, mais SHA3-256 produit la même longueur ; si vous connaissez le langage ou la bibliothèque du système d'origine, tenez-en compte également.
  • Les dumps de hash copiés sur plusieurs lignes (séparés par des sauts de ligne ou des espaces) voient aussi leurs espaces internes automatiquement supprimés avant l'identification, vous pouvez donc les coller tels quels.
  • Si vous n'êtes pas certain du résultat, la méthode la plus fiable consiste à vérifier la source du hash — le code source ou la documentation de l'application.

Dans quels cas s'en servir

Pour examiner un système repris

Vous obtenez une première idée de la manière dont ont été produites les empreintes restées en base.

Pour juger d'une migration possible

S'il s'agit de bcrypt ou d'Argon2, vous pouvez les conserver avec leurs paramètres et migrer progressivement, au fil des connexions.

Pour repérer un problème de sécurité

Trouver du MD5 ou du SHA-1 servant à stocker des mots de passe constitue à soi seul un point à corriger.

Pour déchiffrer des journaux ou des extractions

Face à une longue chaîne hexadécimale d'origine inconnue, vous tenez un point de départ pour en déterminer la nature.

Vocabulaire des empreintes

MD5
Fonction de hachage sur 128 bits. Les collisions se construisent en pratique, elle ne doit donc servir ni aux mots de passe ni à la détection d'altérations.
SHA-1
Fonction de hachage sur 160 bits. Comme MD5, elle subit des attaques par collision démontrées et n'est pas recommandée pour de nouveaux usages.
SHA-256 / SHA-512
Fonctions de la famille SHA-2. Leur rapidité, atout ailleurs, devient une faiblesse pour stocker des mots de passe, car elle facilite les essais exhaustifs.
bcrypt
Empreinte conçue pour les mots de passe, qui porte le facteur de coût dans la chaîne elle-même. Elle commence par $2a$ ou $2b$.
Argon2
Empreinte de mots de passe lauréate du concours de 2015. Elle commence par $argon2id$ et permet aussi de régler la quantité de mémoire.
Sel
Valeur aléatoire qui change à chaque empreinte. bcrypt et Argon2 la portent au sein même de la chaîne, ce qui évite de la conserver à part.

Questions fréquentes

Non, pas à partir de la seule valeur de hash. Certains algorithmes, comme SHA-256 et SHA3-256, produisent des sorties d'exactement la même longueur, si bien que la sortie seule ne peut jamais être concluante. Pour en avoir la certitude, il faut consulter le code source ou la documentation de l'application qui a généré le hash.

BCrypt et Argon2 sont conçus spécifiquement pour le stockage des mots de passe et utilisent un « Modular Crypt Format » qui intègre le nom de l'algorithme et les paramètres sous forme de texte au début du hash, comme $2b$ ou $argon2id$. Tant que cette information peut être lue, l'algorithme peut être déterminé de manière unique.

Non, il ne le peut pas. Cet outil se contente d'estimer le type d'algorithme à partir de l'« apparence » de la valeur de hash ; il n'offre aucune fonction permettant de retrouver les données d'origine à partir d'un hash, comme une attaque par force brute.

La résistance aux collisions de MD5 et SHA-1 a été rompue ; s'ils sont utilisés pour stocker des mots de passe, cela doit être traité comme un risque de sécurité. Il est recommandé de migrer ces systèmes vers BCrypt ou Argon2id, conçus spécifiquement pour le stockage des mots de passe.

Oui. Avec l'outil de ce site Calcul et comparaison groupés de hash, vous pouvez saisir la même chaîne et calculer réellement ses valeurs MD5, SHA-1, SHA-256, SHA-512, SHA3-512, BCrypt et Argon2id afin de les comparer à ce résultat d'identification. Pour les candidats SHA3-224, SHA3-256 ou SHA3-384, changez la longueur de sortie dans le calculateur de hachage SHA-3.
Tool-kun

Anecdote — Pourquoi une valeur de hash seule ne permet pas de déterminer l'algorithme

Le rôle d'une fonction de hachage est de convertir des données d'entrée en une sortie de longueur fixe, et cette sortie (le condensé) ne contient elle-même aucune métadonnée indiquant quel algorithme l'a produite. C'est une conséquence inévitable de sa conception : intégrer des métadonnées changerait la longueur de la sortie, ce qui briserait la propriété de « longueur fixe » essentielle à une fonction de hachage cryptographique. Il ne nous reste donc, comme indice, que l'« apparence » de la sortie — sa longueur et son jeu de caractères.

Cette limite apparaît le plus nettement dans la relation entre les familles SHA-2 et SHA-3. SHA-256 et SHA3-256 ont des structures internes totalement différentes (SHA-2 utilise une construction de Merkle-Damgård, SHA-3 une construction en éponge), mais toutes deux sont conçues pour produire une sortie de 256 bits, soit 64 caractères hexadécimaux. La même relation existe entre SHA-224/SHA3-224, SHA-384/SHA3-384 et SHA-512/SHA3-512 ; la longueur de sortie seule ne permet donc jamais de trancher. Comme SHA-2 est en pratique bien plus répandu, cet outil présente la variante SHA-2 comme candidat privilégié lorsque les longueurs coïncident, mais il ne s'agit en définitive que d'une supposition statistique.

À l'inverse, des algorithmes de hachage de mots de passe comme BCrypt et Argon2 lèvent cette ambiguïté en adoptant un format autodescriptif appelé Modular Crypt Format. Des chaînes comme $2b$12$... ou $argon2id$v=19$... intègrent sous forme de texte, au début du hash, le nom de l'algorithme, la version et les paramètres, ce qui permet de reconstituer de manière unique la méthode de calcul rien qu'en regardant la chaîne. Face à un hash de ce format, une identification définitive devient possible.

Ce type de travail d'identification intervient dans des situations concrètes : l'analyse de dumps de mots de passe extraits de systèmes hérités, ou les défis de cryptanalyse lors de compétitions de sécurité CTF (Capture The Flag). Réduire les algorithmes possibles à partir d'une valeur de hash permet de décider efficacement quel outil d'analyse ou quelle méthode de cassage essayer ensuite, comme le mode d'attaque à choisir dans Hashcat.