MD5 vs SHA-256: Unterschiede und Empfehlungen

MD5 und SHA-256 sind zwei kryptografische Hash-Funktionen. Sie erzeugen einen Hash mit fester Größe aus einer Eingabe beliebiger Größe. Man begegnet ihnen überall: Integritätsprüfung von Dateien, Signaturen, eindeutige Bezeichner, TLS-Zertifikate, Blockchain. Ihr Sicherheitsstatus ist jedoch sehr unterschiedlich: MD5 ist seit 2004 für kryptografische Zwecke gebrochen, SHA-256 bleibt 2026 sicher. Dieser Artikel klärt auf.

Rückblick auf Hash-Funktionen

Eine kryptografische Hash-Funktion wandelt eine Nachricht beliebiger Länge in einen Hash mit fester Größe um. Drei erwartete Eigenschaften:

  • Urbildresistenz: Bei einem gegebenen Hash muss es undurchführbar sein, die ursprüngliche Nachricht zu finden.
  • Zweite Urbildresistenz: Bei einer gegebenen Nachricht muss es undurchführbar sein, eine andere zu finden, die denselben Hash erzeugt.
  • Kollisionsresistenz: Es muss undurchführbar sein, zwei verschiedene Nachrichten zu finden, die denselben Hash erzeugen.

Eine Funktion gilt als gebrochen, sobald eine dieser Eigenschaften fällt. Bei MD5 ist die Kollisionsresistenz 2004 gefallen.

MD5: 128 Bit, seit 2004 gebrochen

MD5 (Message Digest 5) ist eine 1991 von Ronald Rivest entwickelte und durch RFC 1321 standardisierte Funktion. Sie erzeugt einen Hash von 128 Bit (16 Byte, 32 hexadezimale Zeichen).

2004 veröffentlichten Wang und Yu einen Angriff, der MD5-Kollisionen in wenigen Stunden auf einem PC erzeugt. Seitdem sind die Kosten zur Erzeugung einer Kollision auf wenige Sekunden gesunken. 2008 haben Forscher ein gefälschtes, mit MD5 signiertes SSL-Zertifikat hergestellt, das von allen Browsern als gültig anerkannt wurde. 2012 nutzte die Malware Flame eine MD5-Kollision, um ihre ausführbare Datei als legitime Microsoft-Binärdatei zu signieren.

Fazit: MD5 darf nicht mehr verwendet werden, sobald ein Angreifer die Eingabe beeinflussen kann. Alle kryptografischen Verwendungen (Signaturen, Integrität gegenüber einem Gegner, Schlüsselableitung) sind ausgeschlossen. Nur wenige nicht feindliche Verwendungen bleiben akzeptabel, wie eine Prüfsumme einer Netzwerkübertragung oder ein Cache-Schlüssel: MD5 bleibt schnell, und eine unbeabsichtigte Kollision bleibt statistisch unmöglich.

SHA-256: 256 Bit, sicher im Jahr 2026

SHA-256 gehört zur Familie SHA-2, die 2001 vom NIST veröffentlicht und durch FIPS 180-4 standardisiert wurde. Sie erzeugt einen Hash von 256 Bit (32 Byte, 64 hexadezimale Zeichen).

Es ist kein praktischer Angriff gegen SHA-256 bekannt. Der beste theoretische Angriff auf Kollisionen betrifft 31 Runden von 64, ohne praktische Auswirkung. Die Kosten für Brute-Force zum Finden einer Kollision liegen in der Größenordnung von 2^128 Operationen, außerhalb der Reichweite jeder bekannten Infrastruktur.

SHA-256 wird verwendet in: TLS (X.509-Zertifikate), Git (seit dem SHA-256-Übergang), Bitcoin (Proof-of-Work), Signaturen von Linux-Paketen, Windows Update usw. Es ist heute der standardmäßig empfohlene Hash für die meisten allgemeinen kryptografischen Zwecke.

Praktische Unterschiede

Ausgabelänge

MD5("hello")     = 5d41402abc4b2a76b9719d911017c592               (32 chars hex)
SHA-256("hello") = 2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824 (64 chars hex)

Geschwindigkeit

MD5 ist etwa 2- bis 3-mal schneller als SHA-256 auf derselben Maschine. Auf einer modernen CPU verarbeitet MD5 mehrere GB/s pro Kern, SHA-256 liegt in der Größenordnung von GB/s. Auf neueren CPUs mit SHA-NI-Erweiterung verringert sich der Abstand stark.

Sicherheit

Das ist der einzige Unterschied, der wirklich zählt: MD5 ist bei Kollisionen gebrochen, SHA-256 nicht. Wenn Sicherheit gegen einen Gegner auf dem Spiel steht, ist die Wahl entschieden.

Vergleichstabelle

Kriterium MD5 SHA-256
Jahr19912001
Ausgabegröße128 Bit / 32 hex256 Bit / 64 hex
KollisionsresistenzSeit 2004 gebrochenKein praktischer Angriff
Relative Geschwindigkeit2- bis 3-mal schnellerReferenz
HardwarebeschleunigungKeine dedizierteSHA-NI auf neueren CPUs
Kryptografische VerwendungNicht empfohlenEmpfohlen
Nicht-feindliche IntegritätsprüfungAkzeptabelEmpfohlen
Regulatorische KonformitätAbgelehnt (PCI-DSS, FIPS)Akzeptiert

Anwendungsfälle

Wann MD5 akzeptabel bleibt

  • Anwendungs-Cache-Schlüssel (Redis, memcached) ohne Sicherheitsrelevanz
  • Duplikaterkennung in einem nicht feindlichen Datensatz
  • Prüfsumme einer Netzwerkübertragung zur Erkennung versehentlicher Beschädigungen
  • Hash einer Zeichenkette zur Verteilung (Sharding) ohne adversarielle Einschränkung

Wann SHA-256 sich durchsetzt

  • Integritätsprüfung gegen einen Angreifer (signierte Downloads, Pakete)
  • Digitale Signaturen, X.509-Zertifikate
  • Git-Bezeichner von Commits und Objekten
  • Schlüsselableitung (in Kombination mit HKDF)
  • Jede Anwendung, die einer regulatorischen Anforderung unterliegt (PCI-DSS, ANSSI, FIPS)

Konkrete Beispiele

In PHP sind beide Funktionen über die Funktion hash() verfügbar:

// Hash einer Zeichenkette
$md5    = hash('md5',     'hello world');
$sha256 = hash('sha256',  'hello world');

// Hash einer Datei (Streaming-Lesen)
$md5File    = hash_file('md5',    '/path/to/file.iso');
$sha256File = hash_file('sha256', '/path/to/file.iso');

Sie können diese Hashes direkt online mit unserem Text-Hash-Generator erzeugen, eine Datei mit dem Datei-Hash-Generator hashen oder einen unbekannten Hash-Typ mit dem Hash-Identifizierer erkennen.

Empfehlung

Die Regel für 2026 ist einfach: SHA-256 standardmäßig. MD5 sollte in Ihrem Code nicht mehr auftauchen, sobald ein Angreifer die Eingabe beeinflussen kann, was nahezu alle Serverfälle abdeckt. Die höhere Leistung von MD5 rechtfertigt seinen Einsatz nicht mehr: Der Abstand ist mit den SHA-NI-Beschleunigungen, die auf modernen x86- und ARM-CPUs vorhanden sind, vernachlässigbar geworden.

Häufig gestellte Fragen

Ist MD5 noch sicher für Passwörter?

Nein, niemals. Und dieser Punkt ist unabhängig von Kollisionen: MD5 ist zu schnell. Eine GPU knackt mehrere Milliarden MD5-Hashes pro Sekunde, was jeden Wörterbuch- oder Brute-Force-Angriff trivial macht. Verwenden Sie für Passwörter bcrypt, Argon2 oder scrypt (siehe unseren Vergleich Bcrypt vs Argon2).

Was ist der Unterschied zwischen SHA-256 und SHA-2?

SHA-2 ist die Familie, SHA-256 ist ein Mitglied davon. Die Familie umfasst SHA-224, SHA-256, SHA-384, SHA-512, SHA-512/224 und SHA-512/256. Sie unterscheiden sich durch Ausgabegröße und Größe der internen Blöcke. SHA-256 ist die am häufigsten verwendete Variante.

Sollte man auf SHA-3 wechseln?

Nicht unbedingt. SHA-3 (2015 veröffentlicht) basiert auf einer radikal anderen Konstruktion (Keccak / Schwamm), aber SHA-256 bleibt sicher. SHA-3 dient hauptsächlich als Plan B im Falle eines unerwarteten Problems mit SHA-2. Wählen Sie SHA-3, wenn eine Norm es vorschreibt oder wenn Sie kryptografische Vielfalt wünschen. Andernfalls bleibt SHA-256 die Standardwahl.

Kann man einen MD5- oder SHA-256-Hash umkehren?

Nein, konstruktionsbedingt: Ein Hash verliert Information. Die „Entschlüsselungs"-Websites für MD5 fragen lediglich riesige Datenbanken vorberechneter Hashes (Rainbow Tables) für häufige Eingaben ab. Für lange zufällige Daten ist es bei beiden Algorithmen unmöglich, die Eingabe wiederzufinden.

Wird SHA-256 von einem Quantencomputer gebrochen werden?

Grovers Algorithmus halbiert die effektive Sicherheit von Hashes gegenüber einem Quantenangreifer: SHA-256 würde dann etwa 128 Bit Sicherheit bieten, was weiterhin völlig ausreicht. Keine Eile auf der Hash-Seite, im Gegensatz zur asymmetrischen Kryptografie.