Générateur SHA-1 (160 bits, usage hérité)
Générez des hashes SHA-1 dans votre navigateur — sortie hex de 40 caractères, sans envoi. Outil hérité pour les empreintes Git, contrôles de certificats anciens et audits de migration. Données jamais transmises.
Qu'est-ce que SHA-1 ?
SHA-1 (Secure Hash Algorithm 1) est une fonction de hachage cryptographique de 160 bits publiée par le NIST en 1995 sous la norme FIPS 180-1. Elle a été conçue par la NSA américaine pour remplacer SHA-0 (une version antérieure défectueuse rapidement retirée en 1993) et était l'algorithme de hachage dominant pour les signatures numériques, les certificats TLS et la signature de code tout au long des années 2000.
Historique des failles : En 2005, l'équipe de Xiaoyun Wang a publié une attaque théorique réduisant la résistance aux collisions de SHA-1 de 2^80 à 2^63 opérations — une rupture théorique, mais pas encore pratique. En février 2017, Google et CWI Amsterdam ont publié l'attaque SHAttered, produisant deux documents PDF distincts avec des hashes SHA-1 identiques en utilisant environ 110 années-GPU de calcul. C'était la rupture pratique définitive. Le NIST avait déjà déprécié SHA-1 pour les signatures en 2011 (NIST SP 800-131A) ; les éditeurs de navigateurs et les autorités de certification ont suivi en retirant le support des certificats SHA-1 en 2016–2017.
Statut actuel : SHA-1 est déprécié pour tous les usages sensibles à la sécurité — signatures numériques, empreintes de certificats, stockage de mots de passe et signature de code. Il persiste dans le format d'ID d'objets de Git (hashes de commits), où il est utilisé pour l'adressage par contenu plutôt que pour la sécurité, et dans les sommes de contrôle de logiciels legacy où les administrateurs n'ont pas encore migré. Le projet Git a ajouté le support du format d'objets SHA-256 dans la version 2.29 (octobre 2020). Tous les nouveaux projets devraient utiliser SHA-256 ou plus fort.
Cet outil calcule SHA-1 entièrement dans votre navigateur via crypto.subtle.digest('SHA-1', ...) de la Web Crypto API. La sortie hexadécimale de 40 caractères est identique à ce que produisent sha1sum, openssl dgst -sha1 ou git hash-object. Aucun octet n'est envoyé à un serveur.
SHA-1 vs la famille SHA-2 : SHA-1 produit 40 hex (160 bits). SHA-256 produit 64 hex (256 bits) et n'a aucune faiblesse connue. MD5 produit 32 hex (128 bits) et a été rompu plus tôt (2004). Pour tout nouveau travail de hachage, SHA-256 est le choix standard.
// Hash text using Web Crypto API (SHA-1 — legacy use only)
async function sha1(text) {
const data = new TextEncoder().encode(text);
const hash = await crypto.subtle.digest('SHA-1', data);
return Array.from(new Uint8Array(hash))
.map(b => b.toString(16).padStart(2, '0'))
.join('');
}
await sha1('Hello, World!');
// → '0a0a9f2a6772942557ab5355d76af442f8f65e01'
// ⚠️ SHA-1 is broken — use SHA-256 for new work. Exemples SHA-1
Recherche d'une empreinte de commit Git
tree 4b825dc642cb6eb9a060e54bf8d69288fbee4904 author A Dev <dev@example.com> 1716854400 +0000 committer A Dev <dev@example.com> 1716854400 +0000 Initial commit
Git stocke chaque commit comme un blob dont le SHA-1 est calculé à partir de l'en-tête de commit et de son contenu exactement dans ce format. La chaîne hexadécimale de 40 caractères qu'affiche `git log` est une empreinte SHA-1 directe. Collez le texte brut de l'objet commit ici pour reproduire le même hash — utile lors du débogage de la sortie `git cat-file` ou pour vérifier qu'un dépôt miroir n'a pas altéré l'historique. Note : Git 2.29+ prend en charge le mode SHA-256 (git init --object-format=sha256), et le dépôt d'objets de GitHub migrera éventuellement. Pour les nouveaux dépôts, préférez le mode SHA-256.
Vérification d'une empreinte de certificat TLS hérité
-----BEGIN CERTIFICATE----- MIIDXTCCAkWgAwIBAgIJAKlL... -----END CERTIFICATE-----
Avant 2017, les navigateurs affichaient les empreintes de certificats sous forme de chaînes hexadécimales SHA-1 de 40 caractères. Les autorités de certification ont cessé d'émettre des certificats signés SHA-1 en janvier 2016, et tous les principaux navigateurs ont retiré le support début 2017. Si vous auditez un ancien certificat interne ou validez un appareil IoT hérité, collez le corps PEM ici pour reproduire l'empreinte SHA-1 à des fins de comparaison. Les flux de travail modernes utilisent l'empreinte SHA-256 en 64 caractères.
Vérification d'un ancien téléchargement logiciel
node-v0.12.7-linux-x64.tar.gz
Certaines archives logicielles anciennes ne publient encore qu'une somme de contrôle SHA-1. Bien que cela offre une détection de corruption basique (pas de protection contre la falsification), c'est toujours mieux qu'aucune somme de contrôle. Utilisez l'onglet Fichier pour déposer l'archive, calculer le SHA-1, puis le comparer à la valeur publiée par l'éditeur. Si SHA-256 est également disponible, préférez-le toujours. Pour les nouvelles archives, exigez des sommes de contrôle SHA-256 ou SHA-512.
Démonstration de la collision SHAttered
(Collez le contenu du fichier shattered-1.pdf de Google/CWI via l'onglet Fichier)
En février 2017, Google et CWI Amsterdam ont publié l'attaque SHAttered — la première collision SHA-1 pratique. Ils ont produit deux fichiers PDF différents (shattered-1.pdf et shattered-2.pdf) qui hachent vers la même valeur SHA-1 : 38762cf7f55934b34d179ae6a4c80cadccbb7f0a. Déposer l'un ou l'autre PDF dans l'onglet Fichier de cet outil produit exactement ce hash, prouvant que la collision est réelle. Cette démonstration est la preuve la plus claire que SHA-1 est rompu : deux documents différents avec la même empreinte signifie que l'empreinte n'est plus une identité fiable. Utilisez SHA-256 pour tous les nouveaux flux d'intégrité de documents.
Comment générer des hashes SHA-1
- 1
Collez du texte ou déposez un fichier
Sélectionnez l'onglet Texte et collez n'importe quelle chaîne — un message de commit, un corps de certificat ou une entrée de checksum hérité — dans la zone de saisie. Le hash SHA-1 se met à jour au fil de la frappe. Pour les fichiers, passez à l'onglet Fichier et faites glisser n'importe quel fichier dans la zone de dépôt ; le navigateur le hache localement sans envoi.
- 2
Copiez le hash de 40 caractères
Cliquez sur le bouton Copier à côté de la sortie du hash. La chaîne hexadécimale complète en minuscules de 40 caractères va dans votre presse-papiers. Utilisez le bouton Majuscules si votre système hérité attend de l'hexadécimal en majuscules — certains outils anciens et APIs Windows utilisent les majuscules par défaut.
- 3
Comparez avec une empreinte héritée
Passez à l'onglet Comparer et collez deux hashes SHA-1 côte à côte pour confirmer qu'ils correspondent. Utile pour valider la somme de contrôle d'un éditeur hérité, auditer un dépôt Git miroir ou vérifier une ancienne empreinte de certificat TLS issue d'un document antérieur à l'adoption de SHA-256.
Détails techniques
- Algorithme : construction Merkle-Damgård, 80 tours
- SHA-1 traite l'entrée en blocs de 512 bits (64 octets), appliquant 80 tours d'opérations binaires regroupés en quatre étapes de 20 tours, chacune avec une fonction logique différente (Ch, Parité, Maj, Parité) et une constante additive dérivée des racines carrées de petits entiers. L'état de hachage initial est cinq mots de 32 bits (A–E), et le hash final est la concaténation de ces mots après le dernier bloc. Implémentation définie dans FIPS 180-1 (1995), remplacée par FIPS 180-4 (2015) qui inclut formellement la dépréciation.
- Sortie : 160 bits, 40 caractères hexadécimaux
- Toujours exactement 40 caractères hexadécimaux en minuscules (160 bits = 20 octets, encodés en 2 hex par octet). La longueur de sortie est fixe quelle que soit la taille de l'entrée. Comparé aux 64 caractères de SHA-256, la sortie plus courte offre moins de bits de résistance aux collisions — un facteur clé de pourquoi SHA-1 a été rompu avant SHA-256.
- Performance : rapide, mais c'est en partie le problème
- SHA-1 est rapide — typiquement 400–700 Mo/s dans un navigateur via Web Crypto, compétitif avec SHA-256. Pour un attaquant, cette vitesse est un avantage : un cluster GPU moderne peut calculer des milliards de hashes SHA-1 par seconde, accélérant la recherche par force brute et les recherches de collisions. La vitesse est la raison pour laquelle SHA-1 (comme MD5) ne doit jamais être utilisé pour le stockage de mots de passe — utilisez bcrypt, scrypt ou Argon2 à la place.
- Normes : FIPS 180-1 (1995) — déprécié dans le contexte FIPS 180-4
- SHA-1 a été standardisé dans FIPS 180-1 (1995), remplaçant le SHA-0 défectueux. Le NIST a déprécié SHA-1 pour les signatures numériques dans NIST SP 800-131A (2011) et dans FIPS 186-5 (2023) l'a formellement interdit pour toute génération de signature numérique. RFC 6194 (2011) a documenté les considérations de sécurité connues. L'API WebCrypto du W3C inclut encore SHA-1 pour des raisons d'interopérabilité legacy, ce qui est la raison pour laquelle cet outil navigateur peut le calculer.
Bonnes pratiques
- N'utilisez jamais SHA-1 pour des opérations sensibles à la sécurité
- SHA-1 est déprécié pour les signatures numériques, les certificats TLS, la signature de code, le stockage de mots de passe et tout flux où la résistance aux collisions est importante. L'attaque SHAttered de 2017 a démontré des collisions pratiques. Pour tous les usages sécuritaires, migrez vers SHA-256 ou SHA-3. La différence de coût est négligeable sur le matériel moderne — SHA-256 est accéléré matériellement dans tous les CPU et GPU actuels.
- SHA-1 pour la recherche d'empreintes héritées est acceptable
- Si vous devez vérifier une somme de contrôle de fichier antérieure à 2017, rechercher un ID de commit Git ou inspecter une ancienne empreinte de certificat à des fins d'audit, SHA-1 est approprié. Le hash lui-même n'est pas utilisé pour prendre une décision de confiance — vous reproduisez simplement une empreinte connue pour référence croisée. Documentez ceci explicitement dans vos journaux d'audit : « SHA-1 utilisé pour référence héritée uniquement, pas pour validation sécuritaire. »
- Hachez toujours des octets UTF-8, pas des points de code Unicode
- SHA-1, comme tous les algorithmes de hachage, opère sur des octets, pas sur des caractères. La même chaîne encodée en UTF-8 vs UTF-16 produit des hashes différents. Cet outil encode toujours l'entrée en UTF-8 sans BOM avant le hachage. Si vous devez correspondre à un système utilisant un encodage différent (Windows UTF-16-LE, Latin-1), vous devez pré-encoder l'entrée en externe avant de comparer les hashes.
- Utilisez une comparaison en temps constant lors de la vérification de hashes dans le code
- Si vous comparez deux hashes SHA-1 dans du code, utilisez une vérification d'égalité en temps constant — Node.js
crypto.timingSafeEqual(), Pythonhmac.compare_digest()— plutôt que l'égalité de chaînes naïve (=== ou ==). La comparaison naïve divulgue des informations de timing qui peuvent théoriquement permettre à un attaquant de reconstruire le hash attendu octet par octet. C'est une mesure de défense en profondeur même pour la vérification SHA-1 legacy.
Questions fréquentes SHA-1
SHA-1 est-il encore sûr à utiliser ?
Pourquoi Git utilise-t-il encore SHA-1 ?
--object-format=sha256. GitHub et les grandes forges déploient progressivement le mode SHA-256. Les dépôts existants peuvent être convertis, mais la migration est complexe en raison des milliards d'IDs de commits existants. Pour l'instant, les IDs de commits SHA-1 restent la façon dont la plupart de l'historique Git est stocké, rendant cet outil utile pour la vérification croisée des hashes d'objets commit. Dois-je migrer de SHA-1 vers SHA-256 ?
Qu'était l'attaque SHAttered ?
Les collisions SHA-1 peuvent-elles survenir accidentellement ?
SHA-1 est-il acceptable pour des usages non sécuritaires comme les sommes de contrôle ?
Quelle est la longueur d'un hash SHA-1 ?
Mon entrée est-elle envoyée à un serveur ?
crypto.subtle.digest('SHA-1', data)). Ouvrez DevTools → onglet Réseau pendant le hachage — vous verrez zéro requête sortante. Les fichiers que vous déposez sont lus via l'API FileReader et hachés localement ; les octets ne quittent jamais votre machine. Cela rend l'outil sûr pour hacher des documents confidentiels, des certificats legacy ou des empreintes de code source propriétaire. La même garantie de confidentialité s'applique au générateur SHA-256. Pourquoi ma sortie SHA-1 diffère-t-elle de sha1sum en ligne de commande ?
echo 'hello' | sha1sum inclut un saut de ligne (\n) après 'hello', donc elle hache 'hello\n' et non 'hello'. Utilisez echo -n 'hello' | sha1sum ou printf '%s' 'hello' | sha1sum pour le supprimer. Autres causes fréquentes : fins de ligne Windows (\r\n vs \n), BOM UTF-8 au début du fichier, ou différences d'encodage (UTF-8 vs Latin-1). Cet outil encode l'entrée en UTF-8 sans BOM avant le hachage. Outils connexes
Voir tous les outils →Décodeur JWT
Outils de sécurité
Décodez des jetons JWT en ligne avec notre décodeur JWT gratuit. Inspectez en-tête, charge utile, signature, expiration et revendications. 100 % navigateur — votre jeton ne quitte jamais votre appareil. Sans inscription ni suivi.
Générateur de Hash MD5 en Ligne et Vérificateur de Checksum
Outils de sécurité
Générez des hashes MD5, SHA-256, SHA-1 et SHA-512 dans votre navigateur. Hachez texte ou fichiers, vérifiez les checksums en un clic. 100 % privé.
Générateur de Mot de Passe — Sécurisé & Personnalisable
Outils de sécurité
Générez des mots de passe forts et sécurisés — gratuit, 100 % dans votre navigateur. Personnalisez longueur et caractères, générez jusqu'à 50.
Générateur de Hash SHA-256 & Outil Checksum
Outils de sécurité
Générez des hashes SHA-256 en ligne gratuitement. Hachez texte ou fichiers dans votre navigateur, vérifiez les checksums, copiez la sortie hex de 64 caractères. Sans inscription ; données jamais transmises.
Générateur SHA-3 (Keccak SHA3-256 NIST)
Outils de sécurité
Générez des hashes SHA-3 en ligne gratuitement. Construction sponge NIST FIPS 202 — la norme post-SHA-2. Sortie SHA3-256 en 64 hex. Navigateur uniquement via js-sha3 en chargement différé ; zéro envoi.
Générateur SHA-384 (Hash Suite B TLS)
Outils de sécurité
Générez des hashes SHA-384 en ligne — sortie hex de 96 caractères, immunisé contre l'extension de longueur, conforme NSA Suite B. Associé à AES-256-GCM dans TLS. Tout le hachage s'exécute dans votre navigateur.