SHA-1 vs SHA-256 vs SHA-512
SHA-1, SHA-256 und SHA-512 sind alle Mitglieder der Secure-Hash-Algorithmus-Familie, unterscheiden sich jedoch erheblich in Sicherheit, Ausgabegröße und Leistung. Die richtige Wahl hängt von Ihren Sicherheitsanforderungen, Leistungseinschränkungen und Kompatibilitätsanforderungen ab.
Kurzvergleich
| Merkmal | SHA-1 | SHA-256 | SHA-512 |
|---|---|---|---|
| Ausgabegröße | 160 Bit (20 Byte) | 256 Bit (32 Byte) | 512 Bit (64 Byte) |
| Sicherheitsniveau | 80 Bit (gebrochen) | 128 Bit (sicher) | 256 Bit (sicher) |
| Runden | 80 | 64 | 80 |
| Wortgröße | 32 Bit | 32 Bit | 64 Bit |
| Blockgröße | 512 Bit | 512 Bit | 1024 Bit |
| Status | Veraltet | Empfohlen | Empfohlen |
Sicherheitsanalyse
SHA-1 erzeugt einen 160-Bit-Hash, was ihm durch das Geburtstagsparadoxon eine Kollisionsresistenz von 2^80 Operationen verleiht. Im Jahr 2017 demonstrierte Google den SHAttered-Angriff und erzeugte die erste praktische SHA-1-Kollision mit etwa 2^63 Operationen. Dies bewies, dass SHA-1 keine ausreichende Sicherheit mehr für Zwecke bietet, bei denen Kollisionsresistenz wichtig ist.
SHA-256 bietet 128-Bit-Kollisionsresistenz. Stand 2026 reduziert kein praktischer Angriff SHA-256s Sicherheit unter seine Designstärke. Es ist von NIST für den Einsatz in US-Regierungsanwendungen zugelassen und ist der Standard für SSL/TLS-Zertifikate, Blockchain und digitale Signaturen.
SHA-512 bietet 256-Bit-Kollisionsresistenz. Es ist sogar stärker als SHA-256, bietet aber mehr Sicherheit, als die meisten Anwendungen benötigen. Die zusätzliche Stärke hat auf 32-Bit-Systemen einen Leistungsnachteil, aber auf 64-Bit-Systemen kann SHA-512 tatsächlich schneller sein als SHA-256.
Wo SHA-1 noch vorkommt
Trotz der Veraltung taucht SHA-1 immer noch in Altsystemen auf:
- Git verwendet SHA-1 für Commit-Hashes (obwohl Git SHA-256-Unterstützung hinzugefügt hat)
- Alte digitale Signaturen, die mit SHA-1-Zertifikaten signiert wurden
- Legacy-Datei-Prüfsummen, die vor der Veraltung verteilt wurden
- Einige Versionskontrollsysteme und Backup-Tools
Wenn Sie SHA-1 in einem neuen System antreffen, migrieren Sie sofort zu SHA-256.
Leistungsüberlegungen
Auf 32-Bit-Prozessoren ist SHA-256 schneller als SHA-512, da SHA-512 mit 64-Bit-Wörtern arbeitet, was zusätzliche Anweisungen erfordert. Auf 64-Bit-Prozessoren mit Hardwarebeschleunigung (SHA-Erweiterungen) liefern sowohl SHA-256 als auch SHA-512 gute Leistung, wobei SHA-256 typischerweise etwas schneller ist.
Beim Hashen großer Dateien ist der Unterschied messbar, aber für die typische Nutzung selten signifikant. Eine Datei, die 1 Sekunde zum Hashen mit SHA-256 benötigt, könnte 0,7 Sekunden mit SHA-1 oder 1,3 Sekunden mit SHA-512 benötigen. Für die meisten Anwendungen überwiegen die Sicherheitsvorteile von SHA-256 den geringen Leistungsunterschied bei weitem.
Code-Beispiele
// 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'));
Empfehlung
| Anwendungsfall | Empfehlung |
|---|---|
| SSL/TLS-Zertifikate | SHA-256 |
| Datei-Integritätsprüfung | SHA-256 oder SHA-512 |
| Digitale Signaturen | SHA-256 |
| Passwort-Hashing | bcrypt oder argon2 (nicht SHA) |
| Blockchain / Krypto | SHA-256 |
| Langzeitarchivierung | SHA-512 |
| Legacy-Kompatibilität | Zu SHA-256 migrieren |
Online-Tools
Verwenden Sie die Tools SHA-1 Generator, SHA-256 Generator und SHA-512 Generator, um Hashes sofort zu berechnen. Der Multiple Hash Generator erzeugt alle Hash-Typen gleichzeitig zum Vergleich.
Fazit
SHA-1 ist gebrochen und sollte nicht verwendet werden. SHA-256 ist der empfohlene Standard für die meisten Anwendungen. SHA-512 bietet zusätzliche Sicherheit für Hochrisikoumgebungen. Standardmäßig SHA-256 verwenden, es sei denn, Sie haben einen spezifischen Grund, etwas anderes zu wählen.