Générateur de hachage SHA-1

Obtenez l’empreinte SHA-1 de 160 bits d’un texte, d’octets hexadécimaux ou d’un fichier pendant la saisie. Vérifiez-la par rapport à une somme de contrôle publiée et consultez d’un coup d’œil les SHA-256, SHA-512 et MD5 de la même entrée.

Tous les algorithmes

Fonctionne entièrement dans votre navigateur. Aucune donnée n’est envoyée.

Mode d’emploi

  1. Saisissez du texte, passez l’entrée en Hexa pour saisir des octets, ou ouvrez un fichier.
  2. SHA-1 est présélectionné ; changez le menu « Algorithme » si vous voulez le comparer à une autre fonction de hachage.
  3. Choisissez « hexa (minuscules) » (comme l’affichent sha1sum et Git), « HEXA (majuscules) » ou « Base64 ».
  4. Collez un SHA-1 attendu dans le champ « Comparer avec » ; la page affiche « Correspondance » ou « Aucune correspondance ».

Qu’est-ce que SHA-1 ?

SHA-1 (Secure Hash Algorithm 1) a été conçu par la NSA et publié par le NIST en 1995 sous la référence FIPS 180-1, en remplacement de l’éphémère SHA-0. Il est aujourd’hui spécifié dans FIPS 180-4, et la RFC 3174 le décrit avec un exemple de code C. SHA-1 traite des blocs de 512 bits en 80 tours et produit une empreinte de 160 bits : 40 caractères hexadécimaux ou 28 caractères Base64.

Comme tout hachage, SHA-1 est à sens unique. Une empreinte ne peut pas être déchiffrée ; on peut seulement la retrouver en hachant des valeurs candidates. C’est ainsi que les hachages SHA-1 non salés des mots de passe dérobés à LinkedIn en 2012 ont été cassés en masse ; les mots de passe doivent être stockés avec Argon2, scrypt, bcrypt ou PBKDF2.

SHAttered : pourquoi SHA-1 est obsolète

En février 2017, des chercheurs du CWI Amsterdam et de Google ont publié SHAttered, la première véritable collision SHA-1 : deux fichiers PDF différents ayant le même hachage, obtenus au prix d’environ 2^63 calculs SHA-1. En 2020, Gaëtan Leurent et Thomas Peyrin (« SHA-1 is a Shambles ») ont utilisé une collision à préfixe choisi pour démontrer la falsification de signatures SHA-1 sur des clés PGP, pour un coût à la portée d’un attaquant disposant de moyens importants.

  • Les autorités de certification publiques ont cessé d’émettre des certificats TLS SHA-1 en 2016, et les navigateurs ont cessé de leur faire confiance début 2017.
  • Le NIST interdit SHA-1 pour les nouvelles signatures numériques depuis 2013 et prévoit de le retirer complètement d’ici fin 2030.
  • La plupart des dépôts Git identifient encore les objets par leur SHA-1, calculé avec une implémentation renforcée qui détecte les tentatives de collision ; Git peut aussi créer des dépôts qui utilisent SHA-256.

Les collisions ne cassent pas HMAC : on trouve donc encore HMAC-SHA1 dans les codes TOTP et dans d’anciennes signatures de webhooks ; calculez-le avec le générateur HMAC. Pour tout nouveau projet, choisissez SHA-256.

Identifiants d’objets Git, Base64 et encodage du texte

L’identifiant d’un blob Git n’est pas le SHA-1 du fichier seul. Git hache un en-tête composé de blob, d’un espace, de la taille en octets et d’un octet nul, suivi du contenu. Pour le reproduire ici, passez l’entrée en Hexa et incluez ces octets d’en-tête : pour hello suivi d’un saut de ligne, l’entrée hexa est 626c6f6220360068656c6c6f0a.

$ printf 'hello\n' | sha1sum
f572d396fae9206628714fb2ce00f72e94f2258f  -
$ printf 'hello\n' | git hash-object --stdin
ce013625030ba8dba906f756967f9e9ca394464a

SHA-1 s’affiche généralement en hexa minuscules. Le Base64 apparaît dans la négociation WebSocket, où Sec-WebSocket-Accept est le SHA-1 en Base64 de la clé du client suivie d’un GUID fixe, ainsi que dans les mots de passe LDAP au format {SHA}. N’oubliez pas que le hachage porte sur des octets : un texte contenant des lettres accentuées a un SHA-1 en UTF-8 et un autre en Windows-1252.

SHA-1 en ligne de commande et dans le code

sha1sum file.zip                          # Linux
shasum file.zip                           # macOS (SHA-1 par défaut)
certutil -hashfile file.zip SHA1          # Windows
Get-FileHash file.zip -Algorithm SHA1     # PowerShell

# Python
hashlib.sha1(data).hexdigest()

// Node.js
crypto.createHash('sha1').update(data).digest('hex')

Cette page calcule SHA-1 avec l’API Web Crypto intégrée à votre navigateur : l’entrée ne quitte donc jamais votre appareil. Le tableau « Tous les algorithmes » affiche les valeurs MD5, SHA-256, SHA-384, SHA-512 et CRC de la même entrée.

Exemples

Entrée (UTF-8)SHA-1
Hello, World!0a0a9f2a6772942557ab5355d76af442f8f65e01
Base64.is6c667ee2efd2020349eed40efa07c26683f613c8
你好440ee0853ad1e99f962b63e459ef992d7c211722

Questions fréquentes

SHA-1 est-il encore sûr ?

Pas là où un attaquant peut choisir ou influencer l’entrée, comme pour les signatures et les certificats, car il est possible de produire des collisions SHA-1. Il détecte toujours les corruptions accidentelles, et HMAC-SHA1 n’est pas affecté par les collisions. Pour tout nouveau développement, utilisez SHA-256 ou SHA-512.

Peut-on inverser un hachage SHA-1 ?

Non. Il n’y a ni clé ni déchiffrement. Les sites de recherche ne trouvent que des entrées déjà présentes dans leurs tables de mots courants et de mots de passe divulgués : c’est pourquoi une longue entrée aléatoire ne risque rien, contrairement à un mot de passe court.

Quelle est la longueur d’un hachage SHA-1 ?
160 bits, soit 20 octets : 40 caractères hexadécimaux ou 28 caractères Base64 se terminant par un seul =. RIPEMD-160 a la même longueur, et les hachages de mots de passe de MySQL 4.1 et versions ultérieures sont un astérisque suivi de 40 caractères hexadécimaux. L’identificateur de hachage liste les candidats pour une chaîne donnée.
Comment vérifier un fichier avec un SHA-1 publié ?

Ouvrez le fichier, puis collez la valeur publiée dans le champ « Comparer avec ». L’hexa en majuscules ou en minuscules et le Base64 sont tous acceptés, et la page affiche « Correspondance » ou « Aucune correspondance ».

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

Tous deux ont été publiés par le NIST, mais SHA-256 appartient à la famille plus récente SHA-2, produit une sortie de 256 bits et ne fait l’objet d’aucune attaque pratique connue. SHA-1 a une sortie plus courte et sa résistance aux collisions est cassée.