Hashfunktionen erklärt: SHA-256, Prüfsummen und Passwort-Hashing
Eine Hashfunktion macht aus jeder beliebigen Eingabe – einem Wort, einem Passwort, einer 4-GB-Datei – einen kurzen Fingerabdruck fester Länge. Dieselbe Eingabe ergibt immer denselben Fingerabdruck, und schon die kleinste Änderung ergibt einen völlig anderen. Deshalb sind Hashes das übliche Mittel, um zu prüfen, ob eine Datei unversehrt angekommen ist, um Passwörter zu speichern, ohne die Passwörter selbst aufzubewahren, und um Nachrichten zu signieren. Dieser Ratgeber erklärt, was einen Hash sicher macht, welche Verfahren noch als sicher gelten, wie Sie einen Download prüfen und warum der schnelle Hash, der für eine Datei richtig ist, für ein Passwort der falsche ist.
Was eine Hashfunktion tut
Eine Hashfunktion liest Daten beliebiger Länge und gibt einen Hashwert fester Länge zurück. SHA-256, das heute gebräuchlichste Verfahren, liefert immer 256 Bit, geschrieben als 64 Hexadezimalzeichen – ganz gleich, ob die Eingabe ein einzelner Buchstabe oder ein komplettes Festplattenabbild ist.
c3c211099e2db0d1bb97343886c2b7e23981b636107a296a9fe642b99ca4cc1bSHA-256 von nTools.420849368aee5e9b6838f98b4dde3f493de84c420baa785ea58a08acc2c0cfafSHA-256 von ntools: Ein Buchstabe ist kleingeschrieben, und der Hashwert hat mit dem ersten nichts mehr gemein.
Jede Hashfunktion ist deterministisch – dieselbe Eingabe ergibt auf jedem Computer denselben Hashwert – und schnell zu berechnen. Eine kryptografische Hashfunktion bietet zusätzlich die Garantien aus dem nächsten Abschnitt, und erst diese machen sie für Sicherheitszwecke brauchbar.
Ein Hashwert ist keine komprimierte Kopie: 64 Zeichen können keine 4-GB-Datei enthalten. Theoretisch teilen sich viele Eingaben jeden einzelnen Hashwert; eine sichere Hashfunktion sorgt lediglich dafür, dass sie sich in der Praxis nicht finden lassen.
Was einen Hash sicher macht
FIPS 180-4, der US-Standard, der SHA-256 definiert, bezeichnet die Verfahren als sicher, weil bestimmte Suchen rechnerisch nicht durchführbar sind. In der Praxis geht es um drei Eigenschaften:
- Urbildresistenz: Zu einem gegebenen Hashwert kann niemand eine Eingabe finden, die ihn erzeugt. Genau das bedeutet „Einweg“.
- Zweite-Urbild-Resistenz: Zu einer gegebenen Datei kann niemand eine andere Datei mit demselben Hashwert erstellen.
- Kollisionsresistenz: Niemand kann überhaupt zwei verschiedene Eingaben mit demselben Hashwert finden, selbst wenn er beide frei wählen darf.
Die Kollisionsresistenz fällt als Erstes, weil der Angreifer beide Eingaben kontrolliert. Genau das ist MD5 und SHA-1 passiert. Das ist von Bedeutung, weil digitale Signaturen und Zertifikate über einen Hash des Dokuments berechnet werden: Zwei Dokumente mit demselben Hash haben auch dieselbe Signatur.
MD5, SHA-1, SHA-2 und SHA-3
| Verfahren | Hashwert | Status |
|---|---|---|
MD5 | 128 Bit, 32 Hex-Zeichen | Gebrochen: Kollisionen lassen sich in der Praxis erzeugen. RFC 6151 (2011) schließt es überall dort aus, wo Kollisionsresistenz erforderlich ist, etwa bei digitalen Signaturen. |
SHA-1 | 160 Bit, 40 Hex-Zeichen | Gebrochen: erste öffentliche Kollision 2017. Laut NIST soll es bis zum 31. Dezember 2030 auslaufen. |
SHA-256 | 256 Bit, 64 Hex-Zeichen | Sicher. Gehört zur SHA-2-Familie (FIPS 180-4) und ist heute die übliche Standardwahl. |
SHA-384, SHA-512 | 384 und 512 Bit, 96 und 128 Hex-Zeichen | Sicher. Ebenfalls SHA-2, mit längerem Hashwert. |
SHA-3 | 224 bis 512 Bit, je nach Variante | Sicher. 2015 standardisiert (FIPS 202), auf Basis eines anderen Designs, Keccak, als Ergänzung zu SHA-2, nicht als Ersatz. |
Die SHA-1-Kollision namens SHAttered wurde am 23. Februar 2017 von Google und dem CWI Amsterdam bekannt gegeben: zwei verschiedene PDF-Dateien mit demselben SHA-1-Hashwert, gefunden mit etwa 9,2 Trillionen SHA-1-Berechnungen. Seitdem taugen MD5 und SHA-1 als einfache Hashes nur noch zur schnellen Prüfung auf versehentliche Beschädigung. Die Microsoft-Dokumentation zum Windows-Befehl für Datei-Hashes sagt dasselbe: Diese Verfahren sollen nur zur einfachen Prüfung auf Änderungen dienen, nie für Dateien, die vor Manipulation geschützt werden müssen.
Der Hash-Generator von nTools bietet SHA-256, SHA-384 und SHA-512. Er nutzt die im Browser eingebaute Web Crypto API, die auch SHA-1 unterstützt – mit dem Hinweis, es nicht für kryptografische Zwecke zu verwenden – und MD5 gar nicht anbietet.
Einen Download prüfen
Softwareanbieter geben neben der Datei oft eine Prüfsumme an, meist SHA-256. Nach dem Herunterladen berechnen Sie den Hashwert Ihrer Kopie und vergleichen die beiden.
- Notieren Sie, welches Verfahren der Anbieter verwendet hat, und kopieren Sie die veröffentlichte Prüfsumme.
- Berechnen Sie den Hashwert der heruntergeladenen Datei mit demselben Verfahren: im Hash-Generator von nTools für Dateien bis 200 MB oder für Dateien jeder Größe mit einem Befehl wie den folgenden.
- Vergleichen Sie jedes einzelne Zeichen, nicht nur die ersten und letzten paar. Groß- und Kleinschreibung spielt bei Hexadezimalzahlen keine Rolle.
Get-FileHash .\file.isoWindows PowerShell. SHA-256, sofern Sie nicht -Algorithm angeben.sha256sum file.isoLinux.shasum -a 256 file.isomacOS.
Eine Übereinstimmung beweist, dass es sich um genau die Datei handelt, deren Hash berechnet wurde; sie beweist nicht, wer ihn berechnet hat. Ein Angreifer, der die Datei auf einer Website austauschen kann, kann meist auch die Prüfsumme auf derselben Seite austauschen. Deshalb signieren Projekte wie Ubuntu zusätzlich ihre Liste der Prüfsummen: Sie prüfen zuerst die Signatur mit GPG und dann die Datei anhand der Liste. Sobald der Fingerabdruck des Signaturschlüssels einmal mit der Website des Projekts selbst abgeglichen wurde, gilt das Ergebnis auch dann, wenn Sie von einem nicht vertrauenswürdigen Mirror heruntergeladen haben.
Hashing, Verschlüsselung und Kodierung
| Methode | Umkehrbar? | Schlüssel? | Verwendung |
|---|---|---|---|
| Hashing (z. B. SHA-256) | Nein | Nein | Integrität prüfen, Daten identifizieren, Passwörter mit einem langsamen Verfahren speichern |
| Verschlüsselung (z. B. AES) | Ja, mit dem Schlüssel | Ja | Daten geheim halten |
| Kodierung (z. B. Base64) | Ja, von jedem | Nein | Binärdaten als Text übertragen, in E-Mails, URLs und JSON |
Base64 und URL-Kodierung schützen nichts, denn sie ändern nur, wie Daten geschrieben werden, nicht, wer sie lesen kann. Verschlüsselte Passwörter sind zudem schlechter als gehashte, warnt OWASP: Verschlüsselung funktioniert in beide Richtungen; wer also entschlüsseln kann, erhält die ursprünglichen Passwörter zurück. Sie ist nur für den seltenen Fall gedacht, in dem das Original wiederhergestellt werden muss.
Warum ein schneller Hash für Passwörter falsch ist
Eine Website sollte niemals Ihr Passwort speichern, sondern nur einen Hash davon: Bei der Anmeldung hasht sie Ihre Eingabe und vergleicht das Ergebnis. Der Haken ist die Geschwindigkeit. Ein Hash, der einen 4-GB-Download in Sekunden prüft, erlaubt es jedem, der die Datenbank stiehlt, Milliarden von Kandidaten pro Sekunde durchzuprobieren.
| Verfahren | Versuche pro Sekunde, eine RTX 4090 | Zeit, um alle 8-stelligen Passwörter aus Kleinbuchstaben und Ziffern durchzuprobieren |
|---|---|---|
| MD5 | 164 Milliarden | 17 Sekunden |
| SHA-1 | 51 Milliarden | 56 Sekunden |
| SHA-256 | 22 Milliarden | 2 Minuten |
| SHA-512 | 7,5 Milliarden | 6 Minuten |
| PBKDF2-HMAC-SHA256, 600.000 Iterationen | etwa 15.000 | etwa 6 Jahre |
| bcrypt, Kostenfaktor 10 | etwa 5.750 | etwa 15 Jahre |
Geschwindigkeiten aus dem Benchmark von hashcat 6.2.6 auf einer einzelnen Grafikkarte vom Typ NVIDIA RTX 4090. Die letzten beiden Zeilen sind aus den Einstellungen des Benchmarks selbst hochgerechnet (999 PBKDF2-Iterationen, bcrypt-Kostenfaktor 5), weil die Zeit proportional zum Aufwand wächst. Die Suche umfasst alle 36⁸, also etwa 2,8 Billionen Kandidaten. Echte Angriffe sind noch schneller, denn sie nutzen viele Karten gleichzeitig und probieren wahrscheinliche Passwörter zuerst.
Salt: dasselbe Passwort, ein anderer Hash
Ohne Salt haben alle, deren Passwort 123456 lautet, denselben gespeicherten Hash, und Angreifer führen Tabellen mit den Hashes von Millionen gängiger Passwörter. Diese zu finden ist dann eine Sache des Nachschlagens, nicht des Suchens.
8d969eef6ecad3c29a3a629280e686cf0c3f5d5a86aff3ca12020c923adc6c92SHA-256 von 123456, ungesalzen: in jeder Datenbank, die es auf diese Weise speichert, derselbe Wert.
Ein Salt ist ein Zufallswert, der für jedes Passwort eigens erzeugt, neben dessen Hash gespeichert und in diesen eingerechnet wird. Es ist nicht geheim. Seine Aufgabe ist es, jeden gespeicherten Hash einzigartig zu machen, sodass vorberechnete Tabellen nutzlos werden und jedes Konto einzeln angegriffen werden muss.
NIST SP 800-63B-4 verlangt, dass Passwörter gesalzen und mit einem geeigneten Passwort-Hashverfahren gehasht werden, mit einem Salt von mindestens 32 Bit, und empfiehlt einen so hohen Kostenfaktor, wie es praktikabel ist. Außerdem empfiehlt es einen zusätzlichen Schritt mit einem geheimen Schlüssel, der getrennt von den Hashes aufbewahrt wird, idealerweise in einem Hardware-Sicherheitsmodul. OWASP nennt dieses Geheimnis einen Pepper.
Die bessere Wahl
Passwort-Hashfunktionen sind absichtlich langsam, nehmen das Salt als Eingabe entgegen und haben einen einstellbaren Kostenfaktor, der mit schnellerer Hardware angehoben werden sollte. Das OWASP Password Storage Cheat Sheet nennt diese Mindestwerte:
| Verfahren | Mindesteinstellungen | Wann |
|---|---|---|
Argon2id | 19 MiB Speicher, 2 Iterationen, Parallelität 1 | Erste Wahl. Jeder Versuch braucht Speicher, was den Vorteil von Grafikkarten abschwächt. Spezifiziert in RFC 9106 (2021). |
scrypt | N = 2¹⁷, r = 8, p = 1 | Wenn Argon2id nicht verfügbar ist. Braucht ebenfalls Speicher. |
bcrypt | Kostenfaktor 10 oder höher | Ältere Systeme. Die meisten Implementierungen akzeptieren Passwörter von höchstens 72 Byte; längere werden abgeschnitten oder abgelehnt. |
PBKDF2-HMAC-SHA256 | 600.000 Iterationen | Wenn FIPS-140-Konformität vorgeschrieben ist. |
Das sind Mindestwerte, die eine Anmeldung auf dem Server bei einem Bruchteil einer Sekunde halten und zugleich jeden Rateversuch teuer machen sollen. Welches Verfahren eine Website verwendet, können Sie nicht erkennen – deshalb geht der Rat aus dem Passwort-Ratgeber (lang, zufällig und nie wiederverwendet) vom schlimmsten Fall aus.
HMAC: ein Hash mit Schlüssel
Ein einfacher Hash zeigt, dass Daten nicht verändert wurden, aber jeder kann ihn berechnen: Wer die Daten verändert, berechnet den Hash einfach neu. HMAC, 1997 in RFC 2104 definiert, bezieht einen geheimen Schlüssel in die Hashberechnung ein, sodass nur jemand mit dem Schlüssel das Ergebnis erzeugen oder prüfen kann.
So signieren APIs ihre Anfragen, so weisen Webhooks nach, dass sie vom Absender stammen, und so werden viele JSON Web Tokens signiert: Der JWT-Algorithmus HS256 ist HMAC mit SHA-256.
Häufige Fragen
Lässt sich ein Hash umkehren?
Nein. Der Hashwert enthält die Eingabe nicht, es gibt also nichts zu dekodieren. Angreifer raten stattdessen, indem sie Kandidaten hashen, bis einer passt. Das funktioniert bei kurzen oder gängigen Eingaben wie Passwörtern und scheitert bei langen, zufälligen.
Taugt MD5 noch für irgendetwas?
Um versehentliche Änderungen zu erkennen, etwa eine beschädigte Kopie oder eine doppelte Datei, ja. Nicht dort, wo jemand absichtlich manipulieren könnte, und niemals für Passwörter oder Signaturen.
Können zwei Dateien denselben SHA-256-Hashwert haben?
Theoretisch ja: Es gibt mehr mögliche Dateien als Hashwerte. In der Praxis wurde für das vollständige SHA-256 noch nie eine Kollision gefunden, und eine Brute-Force-Suche würde rund 2¹²⁸ Versuche erfordern.
Ist ein längerer Hashwert immer sicherer?
Nur bis zu einem gewissen Punkt. Mit 256 Bit liegt eine Kollisionssuche bereits weit außer Reichweite; wichtiger ist die Solidität des Verfahrens, wie SHA-1 gezeigt hat. SHA-384 und SHA-512 kommen zum Einsatz, wenn eine Vorschrift sie verlangt, oder als zusätzliche Sicherheitsreserve.
Wird meine Datei hochgeladen, wenn ich sie auf nTools hashe?
Nein. Die Datei wird in Ihrem Browser gelesen und gehasht, und angezeigt wird nur der Hashwert.
Zurück in der Reihe ← Passwortstärke erklärt: Länge, Entropie und Passphrasen
Quellen
- NIST FIPS 180-4 — Secure Hash Standard (SHS) (August 2015)
- NIST FIPS 202 — SHA-3 Standard: Permutation-Based Hash and Extendable-Output Functions (August 2015)
- RFC 6151 — Updated Security Considerations for the MD5 Message-Digest and the HMAC-MD5 Algorithms (March 2011)
- NIST — NIST Retires SHA-1 Cryptographic Algorithm (December 2022)
- EFF — Cryptographers Demonstrate Collision in Popular SHA-1 Algorithm (February 2017)
- MDN Web Docs — SubtleCrypto: digest() method
- Microsoft Learn — Get-FileHash
- Ubuntu — How to verify your Ubuntu download
- hashcat v6.2.6 benchmark, NVIDIA GeForce RTX 4090
- NIST SP 800-63B-4 — Authenticators: password verifiers (July 2025)
- OWASP — Password Storage Cheat Sheet
- RFC 9106 — Argon2 Memory-Hard Function for Password Hashing and Proof-of-Work Applications (September 2021)
- RFC 2104 — HMAC: Keyed-Hashing for Message Authentication (February 1997)
- RFC 7518 — JSON Web Algorithms (JWA) (May 2015)
Weitere Ratgeber
- IP-Adressen erklärt: IPv4, IPv6 und die reservierten Bereiche
- Subnetze und CIDR erklärt: Präfixe, Masken und nutzbare Hosts
- DNS-Einträge erklärt: A, AAAA, CNAME, MX, TXT und NS
- Ist eine Website down oder liegt es an dir? So prüfst du es Schritt für Schritt
- HTTP-Statuscodes und Cloudflare-Fehler: was 403, 404, 429, 500, 503 und 521 bedeuten
- Unix-Zeitstempel und Zeitzonen erklärt
- Mit Datumsangaben rechnen: Tage zwischen zwei Daten, Schaltjahre und ISO-Wochen
- Bildformate erklärt: JPEG, PNG, WebP, AVIF und HEIC
- Passwortstärke erklärt: Länge, Entropie und Passphrasen
- UUIDs erklärt: v4, v7 und die Wahl der richtigen Version
- QR-Codes erklärt: Kapazität, Fehlerkorrektur und Druckgröße
- Prozente und Mehrwertsteuer erklärt: aufschlagen, herausrechnen, kombinieren
- Häufige JSON-Fehler und wie man sie behebt
- PDFs im Browser bearbeiten: Was beim Zusammenfügen, Teilen und Umwandeln erhalten bleibt