MD5, SHA-1, SHA-256: welcher Hash, und wofür
Veröffentlicht am 1.7.2026 · 14 Min. Lesezeit · Entwickler-Tools
Daniel Okonkwo — Front-end-Entwickler und Tech-Redakteur bei OneKitly
Web-Performance · Dateiformate
Anhand von 6 Quellen geprüft
Von einer Hashfunktion verlangt man drei getrennte Garantien, und sie fallen zu unterschiedlichen Zeitpunkten. Urbildresistenz: Zu einem Digest lässt sich keine Eingabe finden, die ihn erzeugt. Zweiturbildresistenz: Zu einer gegebenen Eingabe lässt sich keine andere mit demselben Digest finden. Kollisionsresistenz: Es lassen sich überhaupt keine zwei kollidierenden Eingaben finden. MD5 verlor die Kollisionsresistenz 2004 (Wang et al.), SHA-1 verlor sie 2017, als Google und das CWI Amsterdam zwei verschiedene PDFs mit gleichem SHA-1-Digest veröffentlichten — nach 9 223 372 036 854 775 808 Auswertungen, exakt 2^63. Die Urbildresistenz hat keiner von beiden verloren. Genau deshalb ist der Satz, MD5 sei gebrochen, wahr und wird ständig falsch angewendet. Eine heruntergeladene Datei gegen eine MD5-Summe zu prüfen, um einen abgebrochenen Transfer zu erkennen, funktioniert weiterhin: Zufällige Korruption ist kein Angreifer, der beide Dateien wählt. Ein MD5-signiertes Zertifikat zu akzeptieren funktioniert nicht, denn dort wählt der Angreifer beide. Nimm für Neues SHA-256: md5("hello") ist 5d41402abc4b2a76b9719d911017c592, sha256("hello") dagegen 2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824. Und keines davon ist ein Passwort-Hash. Sie sind auf Tempo gebaut — hier mit 632 MB/s bis 1 357 MB/s auf einem Kern gemessen — während Passwortspeicherung Langsamkeit braucht. Diese Aufgabe gehört bcrypt, scrypt oder Argon2.
MD5 ist gebrochen, und MD5 ist völlig in Ordnung — je nachdem, welche der drei Sicherheitseigenschaften du brauchtest. Hier steht, was Kollisions-, Zweiturbild- und Urbildresistenz wirklich bedeuten, welcher Algorithmus welche noch hat und warum keiner davon in die Nähe eines Passworts gehört.
Drei Eigenschaften, nicht eine
Fast jede Diskussion über Hashfunktionen entgleist schon im ersten Satz, weil das Wort sicher für drei verschiedene Garantien einspringt. Urbildresistenz besagt, dass du allein aus einem Digest nicht auf irgendeine Eingabe zurückrechnen kannst, die ihn erzeugt. Zweiturbildresistenz besagt, dass du zu einer bestimmten Eingabe — diesem Vertrag, dieser Binärdatei — keine andere mit demselben Digest findest. Kollisionsresistenz sagt etwas Stärkeres und Merkwürdigeres: Du findest überhaupt kein kollidierendes Paar, selbst wenn du beide Eingaben wählen darfst und keine von beiden etwas bedeuten muss.
Die drei sind nach Schwierigkeit für den Angreifer geordnet, und das Geburtstagsparadoxon erklärt warum. Ein Urbild zu einem n-Bit-Digest zu finden kostet rund 2^n Arbeit; eine Kollision zu finden nur rund 2^(n/2), weil du nicht auf ein Ziel zielst, sondern darauf wartest, dass zwei deiner Kandidaten übereinstimmen. Für SHA-256 sind das 2^256 gegen 2^128 — beides unerreichbar. Für MD5 sind es 2^128 gegen generische 2^64, und die Kryptanalyse hat den realen Wert weit darunter gedrückt. Kollisionsresistenz fällt deshalb immer zuerst, und sie fällt sehr lange vor der Urbildresistenz.
Was genau gebrochen wurde
MD5 fiel zuerst. Xiaoyun Wang und Mitautoren veröffentlichten 2004 praktische Kollisionen, und binnen weniger Jahre war die Technik zu Kollisionen mit gewähltem Präfix verfeinert: Der Angreifer kontrolliert den Anfang beider kollidierender Nachrichten und kann so jede zu einem sinnvollen Dokument machen. Genau das ermöglicht eine Signaturfälschung: Du lässt eine vertrauenswürdige Stelle die harmlose Hälfte eines Kollisionspaars signieren und heftest ihre Signatur an die andere Hälfte. Heute dauert eine einfache MD5-Kollision auf gewöhnlicher Hardware Sekunden.
SHA-1 hielt bis Februar 2017, als das CWI Amsterdam und Google Research SHAttered veröffentlichten: zwei sichtbar verschiedene PDF-Dateien mit identischem SHA-1-Digest. Deine Ankündigung beziffert die Kosten auf 9 223 372 036 854 775 808 SHA-1-Berechnungen. Diese Zahl ist nicht beliebig — sie ist exakt 2^63 und liegt bequem unter den 2^80, die ein generischer Geburtstagsangriff auf einen 160-Bit-Digest bräuchte. Drei Jahre später erweiterten Leurent und Peyrin das Ergebnis auf Kollisionen mit gewähltem Präfix; damit war SHA-1 für jeden adversarialen Einsatz erledigt, und die Zertifizierungsstellen und Versionsverwaltungen, die es noch ausgaben, begannen die lange Migration.
Beachte, was keines der beiden Ergebnisse dem Angreifer gibt. Niemand kann aus einem MD5-Digest, den du veröffentlichst, die Eingabe zurückgewinnen. Niemand kann zu einer vorhandenen Datei eine zweite mit demselben MD5 herstellen. Beide Angriffe verlangen, dass der Gegner beide Hälften von Anfang an konstruiert. Das ist genau die Grenze zwischen einer Prüfsumme, die einen beschädigten Download erkennt — die Beschädigung durfte nichts wählen — und einer Signatur, die jemanden überstehen muss, der beide Dokumente absichtlich baut.
Die Digests im direkten Vergleich
Schick die Zeichenkette hello durch jeden Algorithmus, und die Unterschiede springen sofort ins Auge. MD5 liefert 5d41402abc4b2a76b9719d911017c592, zweiunddreißig Hex-Zeichen für 128 Bit. SHA-1 liefert aaf4c61ddcc5e8a2dabede0f3b482cd9aea9434d, vierzig Zeichen für 160 Bit. SHA-256 liefert 2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824, vierundsechzig Zeichen für 256 Bit. Jedes Hex-Zeichen trägt vier Bit, die Zeichenlänge ist also stets die Bitlänge geteilt durch vier — ein schneller Weg, einen unbeschrifteten Hash in einer Logdatei oder Datenbankspalte zu erkennen.
Füge nun einen einzigen Punkt hinzu. sha256("hello.") ist 1589999b0ca6ef8814283026a9f166d51c70a910671c3d44049755f07f2eb910 — kein Zeichen an einer vorhersagbaren Stelle mit dem Digest von "hello" gemeinsam. Das ist die Lawineneigenschaft, und sie gilt in MD5 genauso stark, dessen Digest für "hello." d94c10e437d18531e122ed0b45badd2a lautet. Nicht die Lawine hat versagt. MD5 verwirbelt weiterhin hervorragend; nur kann ein hinreichend geschickter Angreifer zwei Verwirbelungen an dieselbe Stelle lenken.
Eine reproduzierbare Fälschung: die Längenerweiterung
MD5, SHA-1, SHA-256 und SHA-512 teilen alle die Merkle-Damgard-Konstruktion: Die Nachricht wird aufgefüllt, in feste Blöcke zerlegt, und jeder Block aktualisiert einen laufenden internen Zustand. Der Digest, den du veröffentlichst, ist genau dieser interne Zustand. Wer deinen Digest hat, kann ihn also zurück in den Algorithmus laden und weiterhashen, als wäre er von Anfang an dabei gewesen. Das ist die Längenerweiterungs-Eigenschaft, und sie ist in keiner dieser Funktionen ein Fehler — sie ist genau das, was die Konstruktion tut.
Hier ist sie ausgeführt. Nimm ein naives Authentifizierungs-Tag der Form sha256(secret + message), mit einem 32-Byte-Geheimnis und der Nachricht user=alice&role=viewer. Das legitime Tag beginnt mit 0556f5e825e91626. Ein Angreifer, der nur die Nachricht, das Tag und die Länge des Geheimnisses kennt — nicht das Geheimnis selbst — kann SHA-256 ab diesem Tag fortsetzen, die zehn Füllbytes 800000000000000001b0 anhängen, die das ursprüngliche Hashen eingefügt hätte, und danach &role=admin. Das herauskommende Tag lautet cca75089ae751c4359a577329d74d9ba345ed7e5f83f988583b2baa16cad5efe und ist Byte für Byte der Digest, den der Server über die verlängerte Nachricht berechnet. Die Fälschung verifiziert. Das Geheimnis war nie bekannt.
Die Lösung ist weder ein längerer Digest noch eine andere SHA-2-Variante. Sie heißt HMAC: Der Hash wird mit zwei abgeleiteten Schlüsseln zweimal verschachtelt, sodass das veröffentlichte Tag kein fortsetzbarer interner Zustand mehr ist. HMAC-SHA-256 über denselben Schlüssel und dieselbe Nachricht ergibt 2ad69479d608c0fc4c89387db138aebb0bbee3b35d46057726228cacfc8a1478, und kein Anhängen liefert dafür eine gültige Erweiterung. SHA-3 ist aus einem anderen Grund immun: Seine Schwammkonstruktion gibt nur einen Teil des internen Zustands aus, der Digest verrät also nicht, wo der Algorithmus stand.
Keiner davon ist ein Passwort-Hash
Das ist der teuerste Fehler, und er hat nichts mit Kollisionen zu tun. Allzweck-Hashes sind auf Durchsatz gebaut, und den liefern sie. Auf einem Kern über einen 64-MB-Puffer gemessen läuft MD5 mit 632 MB/s, SHA-256 mit 1 075 MB/s und SHA-1 mit 1 357 MB/s. Die Reihenfolge lohnt einen zweiten Blick: SHA-256 ist hier 70 % schneller als MD5, weil moderne Prozessoren dedizierte SHA-Befehle mitbringen und keinen MD5-Befehl. Der Satz, MD5 sei schneller, ist seit Jahren nicht mehr verlässlich.
Tempo ist genau die falsche Eigenschaft für ein gespeichertes Passwort, denn der Angreifer mit deiner Datenbank profitiert weit mehr davon als du. Du hashst ein Passwort pro Anmeldung; er hasht Milliarden pro Sekunde auf einem GPU-Rack. Passwort-Hashfunktionen drehen diesen Handel bewusst um. Auf derselben Maschine braucht PBKDF2-SHA-256 mit 600 000 Iterationen 148 Millisekunden pro Passwort, scrypt mit N = 131 072 braucht 397. Das sind rund sieben Passwörter pro Sekunde statt Millionen — eine absichtliche Bremse, die du einmal pro Anmeldung zahlst und der Angreifer einmal pro Rateversuch.
Die richtige Antwort auf die Frage nach dem Hash für Passwörter lautet also: keiner aus diesem Artikel. Nimm Argon2id, wo du frei wählen kannst, bcrypt, wo die Plattform nichts anderes hergibt, scrypt oder PBKDF2, wo ein Standard sie verlangt — immer mit einem eindeutigen Zufallssalt pro Nutzer. SHA-256 behält seinen Platz innerhalb dieser Konstruktionen — PBKDF2-SHA-256 baut darauf auf — aber es ist die Primitive, nicht das Verfahren.
SHA-3 ist kein größeres SHA-2
Die Nummerierung legt den falschen Schluss nahe. SHA-2 folgte auf SHA-1 als verbesserter Entwurf derselben Linie; SHA-3 folgte in diesem Sinn überhaupt nicht auf SHA-2. Es ging aus einem offenen Wettbewerb hervor, den das NIST ab 2007 durchführte, wurde vom Keccak-Team gewonnen und 2015 in FIPS 202 standardisiert — während SHA-2 völlig gesund war und es bis heute ist. Das NIST hat nie jemanden aufgefordert, SHA-2 zu verlassen.
Der Sinn von SHA-3 ist architektonische Vielfalt. Weil es ein Schwamm ist und keine Merkle-Damgard-Kette, würde ein Angriff, der SHA-2 bricht, es sehr wahrscheinlich nicht berühren, und die Welt hätte sofort einen Ersatz. Der Schwamm beseitigt zudem die Längenerweiterung gratis, weshalb manche Entwürfe ihn schon jetzt bevorzugen. Sein Preis ist Tempo: SHA3-256 maß 317 MB/s auf derselben Hardware, auf der SHA-256 1 075 MB/s erreichte — vor allem, weil die Hardware das eine beschleunigt und das andere nicht. Wähle SHA-3, wenn du die andere Konstruktion willst, nicht wenn du mehr Bits willst — SHA3-256 und SHA-256 liefern dieselben 256.
Eine kurze Entscheidungsliste
Etwas signieren, einen Download aus einem feindlichen Netz prüfen, einen Merkle-Baum bauen, eine Inhaltsadresse ableiten: SHA-256. Ein Passwort speichern oder daraus einen Schlüssel ableiten: Argon2id, bcrypt oder scrypt, niemals ein nackter Hash. Eine Nachricht mit einem gemeinsamen Geheimnis authentifizieren: HMAC-SHA-256, nicht sha256(secret + message), aus dem oben gezeigten Grund. Dateien deduplizieren, einen Cache verschlüsseln, eine Hashtabelle aufteilen, einen abgebrochenen Transfer erkennen: MD5 taugt weiterhin und ist schnell genug, solange niemand im Bild von einer Kollision profitiert.
Ein einziger Test klärt die Zweifelsfälle. Frage, ob derjenige, der davon profitiert, dass zwei Eingaben denselben Digest teilen, diese Eingaben auch wählen darf. Lautet die Antwort nein — ein Plattenfehler, ein wackliges Kabel, ein abgebrochener Upload —, kostet dich eine gebrochene Kollisionsresistenz nichts. Lautet sie ja, oder könnte sie ja werden, sobald die Daten deine Maschine verlassen, brauchst du einen Hash mit intakter Kollisionsresistenz, und das heißt SHA-256 oder besser.
| Algorithmus | Digest | Kollisionsresistenz | Urbildresistenz | Sinnvoller Einsatz 2026 |
|---|---|---|---|---|
| MD5 | 128 Bit, 32 Hex-Zeichen | Seit 2004 gebrochen; Kollisionen in Sekunden | Weiterhin intakt | Nicht-adversariale Prüfsummen, Cache-Schlüssel, Deduplizierung |
| SHA-1 | 160 Bit, 40 Hex-Zeichen | Seit 2017 gebrochen (2^63 Auswertungen) | Weiterhin intakt | Nur Altlastenkompatibilität; keine neuen Signaturen |
| SHA-256 | 256 Bit, 64 Hex-Zeichen | Intakt; bester Angriff ist generisch, 2^128 | Intakt, 2^256 | Der Standard für Signaturen, Integrität, Commitments |
| SHA-512 | 512 Bit, 128 Hex-Zeichen | Intakt, 2^256 | Intakt, 2^512 | Gleiche Familie wie SHA-256; schneller in 64-Bit-Software ohne SHA-Befehle |
| SHA3-256 | 256 Bit, 64 Hex-Zeichen | Intakt; andere Konstruktion (Keccak-Schwamm) | Intakt; immun gegen Längenerweiterung | Eine strukturelle Absicherung gegen einen künftigen SHA-2-Bruch, kein Zugewinn an Stärke |
Häufige Fragen
- Ist MD5 im Jahr 2026 sicher?
- Nur dort, wo kein Gegner von einer Kollision profitiert. MD5 verlor 2004 die Kollisionsresistenz, und eine Kollision dauert heute Sekunden. Jede Verwendung, bei der jemand gewinnt, wenn zwei verschiedene Eingaben denselben Digest teilen — Signaturen, Zertifikate, Integritätsprüfungen über ein unsicheres Netz, Deduplizierung von angreiferseitig gelieferten Dateien — ist unsicher. Verwendungen, deren einzige Bedrohung der Zufall ist, bleiben in Ordnung: prüfen, dass eine Kopie nicht abgeschnitten wurde, einen Cache verschlüsseln, Daten auf Server verteilen, lokale Backups vergleichen. MD5 hat die Urbildresistenz nicht verloren, ein veröffentlichter Digest verrät seine Eingabe also ebenfalls nicht. Die pragmatische Regel: MD5 ist ein schneller Fingerabdruck, keine Sicherheitsmaßnahme. Es ist nicht einmal mehr die schnellste Option: Auf einem Kern gemessen lief SHA-256 mit 1 075 MB/s gegen 632 MB/s bei MD5, weil Prozessoren SHA-Befehle mitbringen. War Tempo dein Grund, ist dieser Grund abgelaufen.
- Kann ein SHA-256-Hash entschlüsselt oder umgekehrt werden?
- Nein, und das Wort entschlüsseln passt nicht — Hashen ist keine Verschlüsselung, denn es gibt keinen Schlüssel und keinen vorgesehenen Rückweg. SHA-256 bildet Eingaben beliebiger Länge auf 256 Bit ab, unendlich viele Eingaben teilen sich also jeden Digest, und das Original lässt sich nicht einmal im Prinzip herausgreifen. Eine Eingabe zurückzugewinnen heißt Brute Force: Kandidaten raten und jeden hashen, bis einer passt. Genau deshalb funktionieren die sogenannten Hash-Cracking-Seiten überhaupt. Sie kehren nichts um; sie halten vorberechnete Tabellen von Digests häufiger Eingaben und schlagen deinen nach. Gegen einen zufälligen 32-Byte-Wert schlägt die Suche fehl, und 2^256 Versuche bleiben. Gegen die Zeichenkette password gelingt sie sofort. Praktische Folge: Der Digest eines Geheimnisses mit wenig Entropie ist kaum noch ein Geheimnis — genau deshalb ergänzt Passwortspeicherung ein Salt pro Nutzer (gegen geteilte Tabellen) und eine absichtlich langsame Funktion (gegen schnelles Raten).
- Sollte ich für mehr Sicherheit SHA-512 statt SHA-256 nehmen?
- Selten lohnend. SHA-256 bietet 128 Bit Kollisionsresistenz und 256 Bit Urbildresistenz; SHA-512 verdoppelt beides auf 256 und 512. Da kein Angriff auf SHA-256 auch nur in die Nähe von 2^128 kommt, kauft die zusätzliche Reserve nichts Benennbares, während sich der Digest in jeder Datenbankspalte, URL und Logzeile auf 128 Hex-Zeichen verdoppelt. Es gibt zwei echte Gründe für SHA-512. Erstens die Geschwindigkeit in 64-Bit-Software ohne Hardware-SHA, wo die 64-Bit-Wörter von SHA-512 SHA-256 überholen können — auf Hardware mit SHA-256-Beschleunigung dreht sich die Reihenfolge allerdings um, hier 1 075 MB/s gegen 516 MB/s. Zweitens eine Spezifikation, die es verlangt. SHA-512/256, eine in FIPS 180-4 definierte gekürzte Variante, liefert das Tempo der 64-Bit-Wörter bei 256 Bit Ausgabe und ist der sauberere Kompromiss, wenn du beides brauchst.
- Warum kann ich Passwörter nicht einfach mit SHA-256 und Salt hashen?
- Ein Salt löst ein Problem und lässt das größere unberührt. Es stoppt vorberechnete Tabellen und zwingt den Angreifer, jedes Konto einzeln anzugreifen — das ist echten Wert. Was es nicht ändert, sind die Kosten pro Rateversuch. SHA-256 ist auf Billigkeit gebaut, und ein Angreifer mit deiner gesalzenen Datenbank greift jedes Konto in dem Tempo an, das seine Hardware erlaubt, auf einem GPU-Rack also gewaltig. Die Abwehr muss jeden einzelnen Versuch teuer machen, und genau das leistet eine Passwort-Hashfunktion. Hier gemessen kostet PBKDF2-SHA-256 mit 600 000 Iterationen 148 ms pro Passwort und scrypt mit N = 131 072 kostet 397 ms; Argon2id legt Speicherkosten obendrauf, sodass eine GPU nicht einfach Tausende Instanzen parallel fahren kann. Salt und Langsamkeit sind beide nötig, und nur die zweite hängt vom gewählten Algorithmus ab. Nimm Argon2id, bcrypt oder scrypt und lass SHA-256 darin sitzen, wo es hingehört.
- Was ist Längenerweiterung, und betrifft sie mich?
- Sie betrifft dich nur, wenn du ein Authentifizierungs-Tag als hash(secret + message) gebaut hast. Weil MD5, SHA-1 und die SHA-2-Familie ihren internen Zustand als Digest veröffentlichen, kann jeder, der diesen Digest hat, die Berechnung fortsetzen und ein gültiges Tag für die um angehängte Daten verlängerte Nachricht erzeugen, ohne das Geheimnis je zu erfahren. Das ist nicht theoretisch: Ausgehend von einem echten Tag über ein 32-Byte-Geheimnis und user=alice&role=viewer ergab das Anhängen der zehn Füllbytes 800000000000000001b0 und danach &role=admin den Wert cca75089ae751c4359a577329d74d9ba345ed7e5f83f988583b2baa16cad5efe — genau das, was der Server berechnet. Da Query-Parser meist das letzte Vorkommen eines wiederholten Schlüssels nehmen, kippt diese Erweiterung die Rolle. Zwei Lösungen greifen: HMAC, das für Schlüsselauthentifizierung gedacht und nicht erweiterbar ist, oder SHA-3, dessen Schwamm den vollen Zustand nie preisgibt. Hashst du nur eine Datei ohne Geheimnis, tut dir Längenerweiterung nichts.
- Muss ich von SHA-2 auf SHA-3 migrieren?
- Nein. Das NIST hat SHA-3 in FIPS 202 als Alternative standardisiert, nicht als Ersatz, und billigt die SHA-2-Familie in FIPS 180-4 weiterhin ohne absehbare Abkündigung. SHA-3 existiert, weil die Abhängigkeit von einer einzigen Konstruktion ein systemisches Risiko ist: SHA-1 und SHA-2 teilen eine Entwurfslinie, ein Durchbruch gegen das eine weckte also berechtigte Sorge um das andere. Keccaks Schwamm ist ein völlig anderer Mechanismus, und genau darum geht es. Greif in drei Fällen zu SHA-3. Wenn ein Protokoll oder eine Aufsicht es vorschreibt. Wenn du Immunität gegen Längenerweiterung willst, ohne alles in HMAC zu verpacken. Wenn du etwas entwirfst, das den heutigen kryptografischen Konsens überdauern soll, und Konstruktionsvielfalt willst. Sonst bleibt SHA-256 der vernünftige Standard und ist meist schneller, weil Prozessoren es beschleunigen: hier 1 075 MB/s gegen 317 MB/s bei SHA3-256. Beachte auch, dass das Sicherheitsniveau identisch ist — SHA3-256 und SHA-256 liefern beide 256-Bit-Digests und 128 Bit Kollisionsresistenz.
Artikel, die dich interessieren könnten
Alle Ratgeber →Ähnliche Tools
Quellen
- NIST — FIPS 180-4, Secure Hash Standard (SHS)
- NIST — FIPS 202, SHA-3 Standard: Permutation-Based Hash and Extendable-Output Functions
- NIST — SP 800-131A Rev. 2, Transitioning the Use of Cryptographic Algorithms and Key Lengths
- CWI Amsterdam and Google Research — SHAttered: the first SHA-1 collision
- IETF — RFC 6151, Updated Security Considerations for MD5 and HMAC-MD5
- OWASP — Password Storage Cheat Sheet
Hast du einen Fehler in diesem Artikel entdeckt?