Cookies für Statistik und Werbung
Wir setzen Cookies für Statistik und Werbung ein, beides geht an Google. Wenn du ablehnst, ändert sich für dich sichtbar nichts.Zur Datenschutzseite
Tippe oder füge Text ein und bekomme seinen MD5 beim Schreiben. MD5 ist eine gebrochene Hashfunktion, und diese Seite sagt das immer wieder — weil die meisten Gründe, aus denen Leute danach greifen, Gründe sind, zu etwas anderem zu greifen. Die zwei oder drei berechtigten Verwendungen gibt es aber, und für die ist das hier gedacht.
Wo es läuft
Es wird nichts hochgeladen, weil es keine Datei gibt — gerechnet wird in dieser Seite.
Keine Warteschlange, kein Konto
Es antwortet so schnell, wie dein Rechner es hergibt, und fragt nie, wer du bist.
So oft du willst
Nichts wird gezählt und nichts begrenzt — noch einmal zu antworten kostet uns nichts.
MD5 ist nicht schwach, sondern gebrochen: Zwei verschiedene Eingaben mit demselben Hash lassen sich absichtlich konstruieren, in Sekunden, auf einem gewöhnlichen Laptop. Die erste Kollision wurde 2004 veröffentlicht, und das Verfahren ist seitdem nur billiger geworden. Es gibt keine Einstellung, kein Salz und keine Länge, die das repariert.
Was es nicht heißt: dass MD5 unvorhersagbar geworden wäre oder dass bestehende Hashes nicht mehr passen. Eine Kollision konstruiert ein Angreifer; sie passiert nicht aus Versehen. Genau darauf beruht der verbliebene Anwendungsfall — MD5 ist erledigt, wo jemand dich täuschen könnte, und unberührt, wo niemand es versucht.
Zufällige Beschädigung erkennen. Eine Datei, die beim Übertragen abgeschnitten wurde oder auf einer defekten Platte ein Bit gekippt hat, erzeugt keinen gleichen MD5, weil nichts es darauf angelegt hat. Deduplizierung aus demselben Grund: Zwei identische Dateien haben denselben Hash, und die Wahrscheinlichkeit, dass zwei unabhängige echte Dateien zufällig kollidieren, bleibt astronomisch klein.
Etwas nachbauen, das es schon gibt, ist die zweite — und der Grund, aus dem die meisten hier sind. Ein Cache-Schlüssel, ein ETag, eine Gravatar-URL, eine Datenbankspalte, die vor fünfzehn Jahren jemand so festgelegt hat: In diesen Fällen ist der Algorithmus keine Wahl, sondern eine Tatsache über ein System, mit dem man zusammenarbeiten muss.
Passwörter. Ein Passwort als MD5 zu speichern — mit oder ohne Salz — ist nicht bloß altmodisch, sondern fahrlässig, denn MD5 ist schnell, und schnell ist bei einem Passwort-Hash genau falsch. Verbrauchergrafikkarten probieren Milliarden MD5-Kandidaten pro Sekunde; der ganze Sinn von bcrypt, scrypt und Argon2 ist, dass man sie nicht beschleunigen kann.
Und alles, worauf du dich verlässt. Eine Signatur, ein Zertifikat, ein Download, dessen Herausgeber die Prüfung anbietet, ein Token, das du auf Manipulation prüfst. In jedem dieser Fälle gibt es jemanden, der von einer Kollision profitiert, und eine zu erzeugen ist nicht schwer. Nimm SHA-256, das ist eine Seite weiter.
MD5 nimmt Bytes, und Text ist erst Bytes, wenn eine Kodierung gewählt ist. Diese Seite benutzt UTF-8, weil Dateien, Datenbanken und Request-Bodies das ganz überwiegend enthalten. Ein System, das denselben Text als Latin-1 oder UTF-16 gespeichert hat, erzeugt für scheinbar dieselbe Zeichenkette einen anderen Hash — und keine der beiden Seiten liegt falsch.
Das ist der übliche Grund, warum zwei MD5s „desselben“ Texts nicht übereinstimmen. Bevor du eine Implementierung für kaputt hältst, prüfe die Kodierung und danach einen abschließenden Zeilenumbruch: die zweithäufigste Ursache, denn eine Datei endet meist mit einem und ein Textfeld nicht.
Ein Hash ist eine Zahl; Groß- und Kleinschreibung sind zwei Arten, sie zu notieren, und jeder Parser nimmt beide. Kleinbuchstaben sind die Unix-Konvention und das, was `md5sum` ausgibt. Großbuchstaben begegnen einem in Windows-Werkzeugen und in viel älterer Dokumentation.
Nicht mehr kosmetisch wird es bei einem Vergleich als Zeichenkette. Zwei Hashes desselben Werts, einer je Schreibweise, sind sichtbar identisch und scheitern an einer Gleichheitsprüfung — ein Fehler, der eine Code-Review übersteht, gerade weil beide Werte auf dem Bildschirm gleich aussehen. Vorher normalisieren oder ohne Rücksicht auf Groß- und Kleinschreibung vergleichen.
MD5 fehlt in `crypto.subtle`, der eingebauten Kryptografie des Browsers, und zwar mit Absicht: Das zuständige Gremium hat sich gegen gebrochene Verfahren entschieden. SHA-1, SHA-256 und SHA-512 kommen deshalb vom Browser, MD5 ist hier ausgeschrieben.
Das ist genau deshalb vertretbar, weil MD5 keine Sicherheitseigenschaften mehr hat, die man falsch machen könnte — es ist eine Prüfsumme. Geprüft wird es gegen alle sieben Testwerte aus RFC 1321 und zusätzlich gegen die drei Längen um die 64-Byte-Blockgrenze, die jeder dieser Testwerte zu kurz ist, um sie zu erreichen.
MD5 ist immer zweiunddreißig Hexziffern, unabhängig von der Eingabe. SHA-1 sind vierzig, SHA-256 vierundsechzig, SHA-512 hundertachtundzwanzig. Die Zeichen eines Hashes zu zählen ist der schnellste Weg herauszufinden, aus welchem Verfahren er stammt, wenn die Dokumentation schweigt.
Es ist auch eine schnelle Prüfung für eine Datenbankspalte. Ein Feld, das SHA-256 halten soll und zweiunddreißig Zeichen enthält, hält MD5 — und es hält ihn, weil weiter oben in der Kette etwas nie aktualisiert wurde, während die Dokumentation es wurde. Das kommt häufiger vor, als es sollte.
Die Rechnung lässt sich nicht umkehren — ein Hash wirft Information weg, und aus zweiunddreißig Zeichen ist die Eingabe nicht rekonstruierbar. Das ist die richtige Antwort auf die Frage „kann man MD5 entschlüsseln“, und sie ist unvollständig.
Denn bei kurzen oder verbreiteten Eingaben braucht es keine Umkehrung: Vorberechnete Tabellen decken jedes gängige Passwort und jede kurze Zeichenkette ab, und Nachschlagen dauert Millisekunden. Behandle den MD5 von allem, was erratbar ist, als öffentlich — das ist praktisch dasselbe wie umkehrbar, nur mit einem anderen Werkzeug.
Auf dieser Website gibt es eine zweite Seite, die Prüfsummen berechnet — und die nimmt eine Datei entgegen. Das ist bewusst getrennt, weil es zwei verschiedene Fragen sind: Die Dateiseite beantwortet „ist dieser Download unverändert angekommen“, diese hier beantwortet „welchen Hash hat dieser Wert“.
Zusammengelegt hätte eine Seite ein Ablagefeld für alle, die eine Zeichenkette eingeben wollen, und ein Textfeld für alle, die eine Datei haben — beides jeweils totes Gewicht. Wer eine Datei prüfen will, ist auf der Prüfsummen-Seite richtig; wer einen Cache-Schlüssel nachbaut, hier. Der Algorithmus dahinter ist derselbe, die Frage nicht.
Fast jeder Texteditor und jedes Unix-Werkzeug schreibt am Ende einer Datei einen Zeilenumbruch — POSIX definiert eine Textzeile so, dass sie mit einem endet. Ein Textfeld im Browser tut das nicht. Deshalb weicht der MD5 einer Datei, die nur ein Wort enthält, von dem MD5 desselben Worts aus diesem Feld ab.
Das ist der zweithäufigste Grund, aus dem zwei Hashes „desselben“ Inhalts nicht zusammenpassen, und er ist besonders zäh, weil beide Seiten offensichtlich richtig aussehen. Wer gegen `md5sum` abgleicht, muss den Zeilenumbruch mitdenken — oder gleich mit der Datei arbeiten statt mit ihrem Inhalt.
Ein Cache-Schlüssel muss zwei Dinge können: für gleiche Eingaben gleich sein und für verschiedene fast immer verschieden. Beides kann MD5 einwandfrei, und weil er schnell ist, ist er dafür sogar gut geeignet — dieselbe Eigenschaft, die ihn für Passwörter disqualifiziert.
Angreifbar wird das erst, wenn jemand einen Vorteil davon hätte, zwei verschiedene Anfragen auf denselben Schlüssel zu legen — etwa, um eine fremde Antwort aus dem Cache zu bekommen. Wo Schlüssel aus Nutzereingaben entstehen und der Cache über Sitzungsgrenzen hinweg geteilt wird, ist das eine echte Überlegung; wo sie aus internen Parametern entstehen, nicht.
Durch Umkehren der Rechnung nicht. Bei kurzen oder verbreiteten Eingaben braucht es das aber gar nicht: Vorberechnete Tabellen decken jedes gängige Passwort und jede kurze Zeichenkette ab, Nachschlagen dauert Millisekunden. Behandle den MD5 von allem Erratbaren als öffentlich.
Nur gegen Versehen. Eine abgeschnittene Datei oder ein gekipptes Bit fängt er zuverlässig. Eine Datei, die jemand absichtlich verändert hat, fängt er nicht, weil sich die Änderung mit gleichem Hash konstruieren lässt. Wenn der Herausgeber daneben SHA-256 anbietet, nimm den.
Fast immer die Kodierung oder ein abschließender Zeilenumbruch. Hier werden die UTF-8-Bytes gehasht; ein System, das denselben Text als Latin-1 oder UTF-16 hält, erzeugt für scheinbar dieselbe Zeichenkette einen anderen Hash. Und eine Datei endet meist mit einem Zeilenumbruch, ein Textfeld nicht — das ändert alles.
Nein. Ein Salz verhindert vorberechnete Tabellen, das ist eines von zwei Problemen — das andere ist, dass MD5 schnell ist und Verbraucherhardware Milliarden Kandidaten pro Sekunde gegen ein bekanntes Salz durchprobiert. Passwort-Hashing braucht ein absichtlich langsames Verfahren: bcrypt, scrypt oder Argon2.
Nein. Der Hash entsteht in dieser Seite, durch eine Implementierung von RFC 1321, die in deinem Tab läuft, und das Netzwerk-Panel bestätigt, dass nichts hinausgeht. Was Leute hashen, sind regelmäßig Werte, die sie nicht in fremde Server einfügen sollten.