Alle Artikel

Hash Generator: worin sich MD5, SHA-1 und SHA-256 unterscheiden

Deutsche Umlaute (ä, ö, ü) und das ß lassen sich in Unicode auf zwei Arten kodieren: als ein einzelnes vorkomponiertes Zeichen (NFC) oder als Basisbuchstabe plus separates Kombinationszeichen (NFD). macOS speichert Dateinamen traditionell in NFD, während die meisten Windows- und Linux-Programme NFC erwarten. Zwei Dateien mit optisch identischem Namen "Übung.txt" können deshalb, je nach Erstellungssystem, unterschiedliche Byte-Folgen und damit beim Hashen des Dateinamens komplett unterschiedliche Hashes ergeben.

Warum das beim Hashen von Dateinamen zum Problem wird

Der Hash-Algorithmus selbst arbeitet fehlerfrei — er sieht einfach nur unterschiedliche Bytes und erzeugt entsprechend unterschiedliche Ausgaben. Das eigentliche Problem liegt eine Ebene darüber: Wer Dateinamen mit Umlauten über Systemgrenzen hinweg hasht und vergleicht, sollte den Text vorher auf eine einheitliche Normalisierungsform bringen, sonst gelten identisch aussehende Namen fälschlich als unterschiedlich.

Warum MD5 und SHA-1 als unsicher gelten

Für beide Algorithmen wurden praktische Wege gefunden, zwei verschiedene Datensätze mit demselben Hash zu erzeugen — eine sogenannte Kollision. Das macht sie ungeeignet, wo kryptografische Stärke wichtig ist, obwohl sie weiterhin dort verwendet werden, wo nur eine schnelle Integritätsprüfung nötig ist.

SHA-256 und die SHA-2-Familie

SHA-256 erzeugt einen 256-Bit-Hash und hat bis heute keine bekannten praktischen Kollisionen. Es wird in Blockchains, TLS-Zertifikaten und bei der Integritätsprüfung von Software eingesetzt.

Wofür man das braucht

  • Die Integrität heruntergeladener Dateien durch Vergleich mit einem veröffentlichten Hash prüfen.
  • Nachvollziehen, warum derselbe Dateiname mit Umlauten auf macOS und Windows unterschiedliche Hashes ergeben kann.
  • Kurze eindeutige Fingerabdrücke für große Datenmengen erstellen.

Warum SHA-3 SHA-2 nicht ersetzt hat

SHA-3 wurde als Sieger eines eigenen NIST-Wettbewerbs gewählt, für den Fall, dass in SHA-2 jemals eine grundlegende Schwachstelle gefunden würde — eine „Versicherung" auf Basis einer grundlegend anderen internen Konstruktion (Keccak). Da bisher keine praktischen Angriffe auf SHA-2 gefunden wurden, bleibt SHA-256 in den meisten Systemen der Standard.

Tool ausprobieren