SHA-1 vs SHA-256 vs SHA-512
SHA-1, SHA-256 et SHA-512 sont tous membres de la famille Secure Hash Algorithm, mais ils diffèrent considérablement en termes de sécurité, de taille de sortie et de performances. Choisir le bon dépend de vos exigences de sécurité, de vos contraintes de performance et de vos besoins de compatibilité.
Comparaison Rapide
| Caractéristique | SHA-1 | SHA-256 | SHA-512 |
|---|---|---|---|
| Taille de sortie | 160 bits (20 octets) | 256 bits (32 octets) | 512 bits (64 octets) |
| Niveau de sécurité | 80 bits (cassé) | 128 bits (sûr) | 256 bits (sûr) |
| Rounds | 80 | 64 | 80 |
| Taille de mot | 32 bits | 32 bits | 64 bits |
| Taille de bloc | 512 bits | 512 bits | 1024 bits |
| Statut | Déprécié | Recommandé | Recommandé |
Analyse de Sécurité
SHA-1 produit un haché de 160 bits, lui donnant une résistance aux collisions de 2^80 opérations par le paradoxe des anniversaires. En 2017, Google a démontré l'attaque SHAttered, produisant la première collision pratique SHA-1 en utilisant environ 2^63 opérations. Cela a prouvé que SHA-1 n'offre plus une sécurité adéquate pour tout usage où la résistance aux collisions importe.
SHA-256 offre une résistance aux collisions de 128 bits. En 2026, aucune attaque pratique ne réduit la sécurité de SHA-256 en dessous de sa force de conception. Il est approuvé par le NIST pour une utilisation dans les applications gouvernementales américaines et est le standard pour les certificats SSL/TLS, la blockchain et les signatures numériques.
SHA-512 offre une résistance aux collisions de 256 bits. Il est encore plus fort que SHA-256 mais offre plus de sécurité que la plupart des applications n'en ont besoin. La force supplémentaire a un coût de performance sur les systèmes 32 bits, mais sur les systèmes 64 bits, SHA-512 peut en fait être plus rapide que SHA-256.
Où SHA-1 Est Encore Présent
Malgré sa dépréciation, SHA-1 apparaît encore dans les systèmes hérités :
- Git utilise SHA-1 pour les hachés de commit (bien que Git ait ajouté le support SHA-256)
- Anciennes signatures numériques signées avec des certificats SHA-1
- Sommes de contrôle de fichiers hérités distribuées avant la dépréciation
- Certains systèmes de contrôle de version et outils de sauvegarde
Si vous rencontrez SHA-1 dans un nouveau système, migrez vers SHA-256 immédiatement.
Considérations de Performance
Sur les processeurs 32 bits, SHA-256 est plus rapide que SHA-512 car SHA-512 opère sur des mots de 64 bits, nécessitant des instructions supplémentaires. Sur les processeurs 64 bits avec accélération matérielle (extensions SHA), SHA-256 et SHA-512 fonctionnent tous deux bien, SHA-256 étant généralement légèrement plus rapide.
Pour le hachage de gros fichiers, la différence est mesurable mais rarement significative pour un usage typique. Un fichier qui prend 1 seconde à hacher avec SHA-256 pourrait prendre 0,7 seconde avec SHA-1 ou 1,3 seconde avec SHA-512. Pour la plupart des applications, les avantages de sécurité de SHA-256 l'emportent largement sur la différence de performance mineure.
Exemples de Code
// PHP
echo hash('sha1', 'hello'); // aaf4c61ddcc5e8a2dabede0f3b482cd9aea9434d
echo hash('sha256', 'hello'); // 2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824
echo hash('sha512', 'hello'); // 9b71d224bd62f3785d96d46ad3ea3d73319bfbc2890caadae2dff72519673ca72323c3d99ba5c11d7c7acc6e14b8c5da0c4663475c2e5c3adef46f73bcdec043
import hashlib
print(hashlib.sha1(b'hello').hexdigest())
print(hashlib.sha256(b'hello').hexdigest())
print(hashlib.sha512(b'hello').hexdigest())
// Node.js
const crypto = require('crypto');
console.log(crypto.createHash('sha1').update('hello').digest('hex'));
console.log(crypto.createHash('sha256').update('hello').digest('hex'));
console.log(crypto.createHash('sha512').update('hello').digest('hex'));
Recommandation
| Cas d'Utilisation | Recommandation |
|---|---|
| Certificats SSL/TLS | SHA-256 |
| Vérification d'intégrité de fichiers | SHA-256 ou SHA-512 |
| Signatures numériques | SHA-256 |
| Hachage de mots de passe | bcrypt ou argon2 (pas SHA) |
| Blockchain / crypto | SHA-256 |
| Archivage à long terme | SHA-512 |
| Compatibilité héritée | Migrer vers SHA-256 |
Outils en Ligne
Utilisez les outils Générateur SHA-1, Générateur SHA-256 et Générateur SHA-512 pour calculer des hachés instantanément. Le Générateur de Hachés Multiples génère tous les types de hachés à la fois pour comparaison.
Conclusion
SHA-1 est cassé et ne doit pas être utilisé. SHA-256 est le standard recommandé pour la plupart des applications. SHA-512 offre une sécurité supplémentaire pour les environnements à haut risque. Utilisez SHA-256 par défaut, sauf si vous avez une raison spécifique de choisir autrement.