Was ist eine Prüfsumme? MD5, SHA-1 und SHA-256 erklärt
Eine Prüfsumme ist ein kurzer Fingerabdruck, mit dem Sie überprüfen können, ob eine Datei verändert oder beschädigt wurde. Zu verstehen, welcher Hash-Algorithmus wann zu verwenden ist – und wo MD5 an seine Grenzen stößt – schützt Sie vor häufigen Sicherheitsfehlern.
Was ist eine Prüfsumme?
Eine Prüfsumme (Checksum) ist eine Zeichenfolge mit fester Länge, die aus einem Datensatz generiert wird, indem dieser durch eine Hash-Funktion gejagt wird. Die Prüfsumme fungiert als Fingerabdruck: Wenn sich auch nur ein einziges Bit der Originaldaten ändert, ändert sich die Prüfsumme vollständig. Dies macht Prüfsummen für zwei Dinge nützlich:
- Integritätsprüfung — kam diese Datei ohne Beschädigung oder Manipulation an?
- Identität — ist diese exakte Datei (oder dieser Datensatz) dieselbe wie eine andere Kopie?
Wenn Sie Software von einer offiziellen Website herunterladen, zeigt die Download-Seite oft einen MD5- oder SHA-256-Hash an. Nach dem Herunterladen berechnen Sie den Hash Ihrer lokalen Datei und vergleichen ihn. Wenn sie übereinstimmen, ist die Datei intakt.
Wie eine Hash-Funktion funktioniert
Eine kryptografische Hash-Funktion nimmt Eingabedaten beliebiger Länge entgegen und gibt einen Digest mit fester Länge aus. Vier Eigenschaften definieren eine gute Hash-Funktion:
- Deterministisch — der gleiche Input erzeugt immer den gleichen Output
- Einwegfunktion — man kann einen Hash nicht auf den ursprünglichen Input zurückführen (in einer vernünftigen Zeit)
- Avalanche-Effekt> — die Änderung eines einzelnen Zeichens im Input ändert etwa die Hälfte der Output-Bits
- Kollisionsresistent> — es sollte rechnerisch unmöglich sein, zwei verschiedene Eingaben zu finden, die denselben Hash erzeugen
SHA-256("hello") = 2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824SHA-256("Hello") = 185f8db32921bd46d35e3a1a4e9a9b9c6a7e6a7d2d2c4e9d... (völlig unterschiedlich)
MD5 — Schnell, bekannt und unsicher für die Sicherheit
MD5 (Message Digest Algorithm 5) erzeugt einen 128-Bit (32 Zeichen Hex) Digest. Er wurde 1991 entwickelt und wurde etwa zwei Jahrzehnte lang zum Standard-Prüfsummenalgorithmus im Internet.
Wo MD5 noch akzeptabel ist:
- Nicht-sicherheitsrelevante Integritätsprüfungen — Verifizierung, dass ein großer Dateitransfer während der Übertragung nicht beschädigt wurde
- Deduplizierung — Prüfen, ob zwei Dateien identisch sind (als schnelle Vorprüfung vor einem Byte-für-Byte-Vergleich)
- Cache-Keys und ETags, bei denen Kollisionsangriffe keine Rolle spielen
Wo MD5 nicht akzeptabel ist:
- Passwortspeicherung — MD5 ist extrem schnell, was Brute-Force-Angriffe mittels GPU trivial macht. Milliarden von MD5-Hashes pro Sekunde sind mit Consumer-Hardware möglich.
- Digitale Signaturen — MD5-Kollisionsangriffe wurden in der Praxis demonstriert. Zwei verschiedene Dateien können so erstellt werden, dass sie denselben MD5-Hash haben.
- Zertifikats-Fingerabdrücke — das gleiche Kollisionsproblem gilt hier ebenfalls.
md5($password) finden, ersetzen Sie dies durch password_hash() in PHP oder bcrypt/Argon2 in jeder anderen Sprache. MD5 ist kein Passwort-Hashing-Algorithmus — es wurde nie darauf ausgelegt, langsam zu sein, und gerade diese Langsamkeit macht das Hashen von Passwörtern sicher.
SHA-1 — Veraltet
SHA-1 erzeugt einen 160-Bit (40 Zeichen Hex) Digest. Er ersetzte MD5 als empfohlener Algorithmus Ende der 1990er Jahre und wurde in SSL/TLS-Zertifikaten, Versionskontrollsystemen und zur Prüfung der Dateiintegrität weit verbreitet.
Im Jahr 2017 demonstrierte das Project Zero Team von Google die erste praktische SHA-1-Kollision (den "SHAttered"-Angriff), für die etwa 6.500 CPU-Jahre an Rechenleistung erforderlich waren. Große Browser und Zertifizierungsstellen hörten 2017 auf, SHA-1-Zertifikate zu akzeptieren. Git verwendet intern noch SHA-1 für Commit-Hashes, befindet sich aber im Prozess der Migration zu SHA-256 als optionaler Alternative.
Verwenden Sie für neue Anwendungen kein SHA-1. Verwenden Sie stattdessen SHA-256 oder SHA-512.
SHA-256 — Der aktuelle Standard
SHA-256 ist Teil der SHA-2-Familie, die von der NSA entwickelt und 2001 veröffentlicht wurde. Er erzeugt einen 256-Bit (64 Zeichen Hex) Digest. Bis heute gibt es keinen praktischen Kollisionsangriff gegen SHA-256.
Verwenden Sie SHA-256 für:
- Überprüfung der Dateiintegrität (Software-Downloads, Backups)
- Digitale Signaturen (TLS-Zertifikate, Code-Signing)
- HMAC-basierte Authentifizierungs-Tokens (HMAC-SHA256)
- Blockchain und Kryptowährungen (Bitcoin verwendet doppeltes SHA-256)
- Git-Commit-Hashes im SHA-256-Modus
- JWT (JSON Web Token) Signaturen bei Verwendung von HS256 oder RS256
SHA-256 ist der richtige Standard für fast jede Anwendung, die einen sicheren Hash benötigt. Im Zweifel verwenden Sie SHA-256.
SHA-512 — Wenn Sie mehr benötigen
SHA-512 erzeugt einen 512-Bit (128 Zeichen Hex) Digest. Er gehört zur selben SHA-2-Familie und ist gleichermaßen sicher. Der Hauptunterschied in der Praxis:
- Auf 64-Bit-Prozessoren kann SHA-512 tatsächlich schneller sein als SHA-256, da der Algorithmus für 64-Bit-Wortgrößen optimiert ist
- Auf 32-Bit-Systemen und Hardware ist SHA-256 schneller
- SHA-512 hat einen größeren Output, was eine längere Speicherung und Übertragung bedeutet
Verwenden Sie SHA-512, wenn die Anwendung einen größeren Digest erfordert oder wenn Sie auf Hardware arbeiten, auf der SHA-512 einen Performance-Vorteil bietet. Für die meisten Webanwendungen ist SHA-256 ausreichend.
Ein Hinweis zum Passwort-Hashing
Keiner der oben genannten Algorithmen sollte direkt für die Passwortspeicherung verwendet werden. MD5, SHA-1, SHA-256 und SHA-512 sind alle darauf ausgelegt, schnell zu sein — und genau das ist bei Passwörtern falsch.
Das Hashen von Passwörtern muss absichtlich langsam sein, damit eine gestohlene Datenbank nicht schnell geknackt werden kann. Verwenden Sie dafür eigens entwickelte Passwort-Hashing-Algorithmen:
- bcrypt — ist seit über 20 Jahren der Standard und wird in praktisch jeder Sprache unterstützt
- Argon2 (speziell Argon2id) — Sieger des Password Hashing Competition (2015), empfohlen für neue Anwendungen
- scrypt — Memory-hard, ebenfalls eine starke Wahl
In PHP: password_hash($password, PASSWORD_ARGON2ID). In Node.js: Verwenden Sie das bcryptjs oder argon2 Paket. Diese verwalten die Salt-Generierung und die Anpassung des Work Factors automatisch.
Wie man eine Datei-Prüfsumme überprüft
Wenn Sie Software herunterladen und die Website einen SHA-256-Hash bereitstellt:
shasum -a 256 downloaded-file.zip
# Ergebnis mit dem offiziellen Hash vergleichen
Auf Windows (PowerShell):
Get-FileHash downloaded-file.zip -Algorithm SHA256
Alternativ nutzen Sie unseren Hash Generator, um Dateiinhalte oder Texte einzufügen und MD5-, SHA-1-, SHA-256- oder SHA-512-Hashes direkt in Ihrem Browser zu berechnen — nichts wird an einen Server gesendet.
MD5, SHA-256 und mehr generieren
Berechnen Sie jeden beliebigen Hash (MD5, SHA-1, SHA-256, SHA-512) aus Text oder Dateiinhalt direkt in Ihrem Browser – ohne Upload, ohne Server.