Hash berechnen
Der Hash-Generator berechnet MD5, SHA-1, SHA-256, SHA-384, SHA-512, CRC32 und HMAC in Ihrem Browser. Jedes Ergebnis trägt den Sicherheitsstatus des Algorithmus, denn die mit Abstand folgenreichste Tatsache über MD5 und SHA-1 ist, dass beide gebrochen sind – und ein Tool, das sie anbietet, ohne das zu erwähnen, ist Teil des Problems.
| Algorithmus | Status | Hashwert | Kopieren |
|---|---|---|---|
| MD5128 | unsicher | … | |
| SHA-1160 | unsicher | … | |
| SHA-256256 | aktuell | … | |
| SHA-384384 | aktuell | … | |
| SHA-512512 | aktuell | … | |
| CRC3232 | Prüfsumme | … |
Wie funktioniert Hash berechnen?
Ein Hash bildet jede Eingabe auf einen Wert fester Länge ab, sodass es praktisch unmöglich sein sollte, zwei Eingaben mit derselben Ausgabe zu finden. An diesem „sollte“ hängt einiges, und welche Algorithmen diese Anforderung noch erfüllen, ist der nützlichste Hinweis, den diese Seite Ihnen geben kann.
MD5 und SHA-1 sind gebrochen, und das ist nicht theoretisch
MD5-Kollisionen lassen sich auf einem Laptop in Sekunden erzeugen und wurden auch in freier Wildbahn ausgenutzt: Die Schadsoftware Flame fälschte 2012 mit einer MD5-Kollision ein Microsoft-Code-Signing-Zertifikat. SHA-1 fiel 2017, als Google und CWI zwei PDFs mit demselben Digest erzeugten, und die Kosten sind seither gesunken. Keiner von beiden ist akzeptabel für eine Signatur, für Integrität gegen einen Angreifer oder für das Deduplizieren von Eingaben, die Sie nicht kontrollieren. Als Checksummen ohne Sicherheitsanspruch sind beide in Ordnung, und beide sind nach wie vor überall im Einsatz – deshalb sind sie hier.
Ein Hash ist kein Passwort-Hash
SHA-256 ist auf Geschwindigkeit ausgelegt – Milliarden von Operationen pro Sekunde auf einer GPU. Für ein Passwort ist genau diese Geschwindigkeit das Gegenteil des Schutzes: Die Verteidigung besteht darin, langsam genug zu sein, dass Raten mehr kostet, als das Passwort wert ist. Speichert man den SHA-256 eines Passworts, gesalzen oder nicht, probiert ein Angreifer mit der Datenbank in Minuten die komplette Liste gängiger Passwörter durch. Die richtigen Werkzeuge sind bcrypt, scrypt und Argon2, die alle einen bewusst gewählten Kostenfaktor haben. Nichts auf dieser Seite ist ein Passwort-Hash.
HMAC bedeutet nicht „Schlüssel und Nachricht hashen“
Die naheliegende Konstruktion H(key || message) ist bei jedem Merkle–Damgård-Hash gebrochen – dazu gehören MD5, SHA-1 und SHA-256. Ein Angreifer, der den Digest und die Länge des Schlüssels kennt, kann Daten anhängen und für die verlängerte Nachricht einen gültigen Digest berechnen, ohne den Schlüssel jemals zu sehen. Das ist der Length-Extension-Angriff, und deshalb existiert HMAC als eigenständige Primitive mit ihren verschachtelten inneren und äußeren Hashes. SHA-384 und SHA-512/256 sind von der Konstruktion her immun, weil sie gekürzt sind.
Die Kodierung der Eingabe ändert den Hash
Hashes sind über Bytes definiert, nicht über Zeichen. Der Digest von café hängt also davon ab, ob das akzentuierte Zeichen aus den zwei UTF-8-Bytes C3 A9 besteht oder aus dem einzelnen Latin-1-Byte E9. Diese Seite verwendet durchgängig UTF-8 – so verstehen es alle aktuellen Systeme. Eine Signatur, die lokal gültig ist und in Produktion scheitert, hat sehr oft genau diesen Grund.
CRC32 ist überhaupt kein Hash
Es ist eine fehlererkennende Checksumme für Übertragungsfehler, und mit Absicht lässt sich eine Kollision trivial konstruieren. Mit nur 32 Bits kommt es ab grob 65,000 Eingaben auch unbeabsichtigt zu Kollisionen – laut Geburtstagsgrenze. Richtig, um einen beschädigten Download zu erkennen; falsch für alles andere.
Eingabe
abc
Digests
MD5 900150983cd24fb0d6963f7d28e17f72 broken SHA-1 a9993e364706816aba3e25717850c26c9cd0d89d broken SHA-256 ba7816bf8f01cfea414140de5dae2223b0… current
Welche Optionen und Sonderfälle unterstützt Hash berechnen?
| Parameter | Typ | Standard | Verhalten & Sonderfälle |
|---|---|---|---|
| MD5 | 128-bit | gebrochen | Kollisionen sind auf einem Laptop praktisch umsetzbar und wurden in realen Angriffen genutzt. Geeignet als nicht-sicherer Prüfsummenwert; niemals für Signaturen, Integrität gegenüber einem Gegner oder Deduplizierung von nicht vertrauenswürdigem Input. |
| SHA-1 | 160-bit | gebrochen | SHAttered erzeugte 2017 eine echte Kollision und die Kosten sind seitdem gefallen. Browser und Zertifizierungsstellen haben es abgeschafft. Git verwendet es weiterhin für Objektnamen, was eine Kompatibilitäts- und keine Sicherheitsentscheidung ist. |
| SHA-256 | 256-bit | aktuell | Der aktuelle Standard für Integrität und Signaturen. Kein praktischer Angriff bekannt. Schnell konzipiert, weshalb es die falsche Wahl zum Hashing von Passwörtern ist. |
| SHA-384 | 384-bit | aktuell | SHA-512 gekürzt, was es immun gegen die Längen-Erweiterungs-Attacke macht, die SHA-256 betrifft. Wählt man diese Option, wenn diese Eigenschaft wichtig ist. |
| SHA-512 | 512-bit | aktuell | Schneller als SHA-256 auf 64-Bit-Hardware, trotz der größeren Ausgabe. Zu bevorzugen, wo die zusätzliche Länge kein Kostenfaktor ist. |
| CRC32 | 32-bit | Prüfsumme | Eine fehlererkennende Prüfsumme, kein Hash. Trivial bewusst zu fälschen und kollidiert nach etwa 65.000 Eingaben zufällig. Richtig zum Erkennen einer beschädigten Übertragung und falsch für alles andere. |
| HMAC | mit Schlüssel | nur SHA-Familie | Eine geschützte Konstruktion, die Länger-Erweiterungen widersteht, im Gegensatz zum Hashen eines Schlüssels und einer Nachricht zusammen. Bietet die SHA-Algorithmen; MD5 und CRC32 sind ausgeschlossen, da HMAC über einen gebrochenen Hash einen gebrochenen MAC ergibt. |
| Eingabecodierung | UTF-8 | immer | Hashing ist über Bytes definiert. Ein Digest desselben Textes unterscheidet sich zwischen UTF-8 und Latin-1, was eine wiederkehrende Ursache für Signaturen ist, die lokal verifiziert werden und in der Produktion fehlschlagen. |
| Ausgabe | Hex oder Base64 | hex | Dasselbe Byte in zwei Darstellungen. Hex ist das, was Kommandozeilen-Tools ausgeben; base64 ist das, was viele HTTP-Header tragen. |
Häufig gestellte Fragen
Kann ich damit Passwörter hashen?
Nein – und das ist die wichtigste Antwort auf dieser Seite. Jeder Algorithmus hier ist auf Geschwindigkeit ausgelegt, und Geschwindigkeit ist genau das, was man bei einem Passwort nicht will: Ein Angreifer mit Ihrer Datenbank und einer GPU probiert Milliarden von Kandidaten pro Sekunde aus. Verwenden Sie bcrypt, scrypt oder Argon2, die alle einen einstellbaren Kostenfaktor haben, der jedes Raten teuer macht. Ein gesalzener SHA-256 hilft gegen Rainbow-Tables und bringt gegen eine moderne Cracking-Hardware gar nichts.
Ist MD5 wirklich gebrochen, wenn es überall noch eingesetzt wird?
Beides stimmt. Kollisionen sind praktisch erzeugbar – zwei Dateien mit demselben MD5 bekommen Sie auf einem Laptop hin –, und MD5-Kollisionen wurden in einem realen Angriff genutzt, um ein Microsoft-Code-Signing-Zertifikat zu fälschen. Weiterhin ist MD5 überall als Checksumme ohne Sicherheitsanspruch anzutreffen, in ETags und Integritätsprüfungen von Dateien gegen versehentliche Beschädigung, und diese Verwendung ist in Ordnung. Nicht in Ordnung ist alles, wobei ein Angreifer die Eingabe wählt.
Warum weicht mein Digest von dem eines anderen Tools ab?
Fast immer liegt es an der Eingabe, nicht am Algorithmus. Prüfen Sie zuerst auf ein abschließendes Newline – eine Datei endet mit einem, ein Textfeld meist nicht, und ein einziges Byte ändert alles. Dann prüfen Sie die Kodierung: Diese Seite verwendet UTF-8, ein Tool mit Latin-1 als Voreinstellung liefert für jedes Nicht-ASCII-Zeichen einen anderen Digest. Prüfen Sie zum Schluss, ob das andere Tool die Bytes der Datei gehasht hat oder deren Base64-Darstellung.
Wozu dient HMAC?
Um nachzuweisen, dass eine Nachricht von jemandem mit dem geteilten Geheimnis stammt und unverändert geblieben ist. So werden Webhook-Payloads, API-Requests und Session-Cookies signiert. Dass HMAC eine eigene Primitive ist und nicht einfach Schlüssel und Nachricht zusammen gehasht werden, liegt an der Length-Extension: Bei den meisten Hashes kann ein Angreifer aus H(key || message) einen gültigen Digest für eine längere Nachricht berechnen, ohne den Schlüssel zu kennen. Die verschachtelte Konstruktion von HMAC verhindert genau das.
Welchen SHA soll ich verwenden?
SHA-256, sofern kein Grund dagegen spricht – er ist überall der Standard, gut analysiert und schnell genug. SHA-512 ist auf 64-Bit-Hardware trotz der längeren Ausgabe tatsächlich schneller. SHA-384 ist ein gekürzter SHA-512, damit immun gegen Length-Extension und die richtige Wahl, wenn Sie etwas bauen, das ein Geheimnis direkt hasht, statt HMAC zu verwenden.
Wird meine Eingabe hochgeladen?
Nein. SHA-Hashing nutzt das eingebaute SubtleCrypto des Browsers; MD5 und CRC32 sind auf dieser Seite in JavaScript implementiert, weil SubtleCrypto MD5 bewusst nicht anbietet. Nichts verlässt den Browser-Tab, und das ist relevant, weil das, was Leute hashen, häufig API-Geheimnisse, Tokens und Dateiinhalte sind.