Sicherheit · 3 Min. Lesezeit ·

MD5, SHA-1 oder SHA-256: Welchen Hash solltest du nutzen?

Prüfsummen, Dateiintegrität, Passwörter und Signaturen brauchen jeweils etwas anderes. Ein kurzer Leitfaden zur richtigen Hashfunktion und zu dem einen Fehler, den du vermeiden musst.

Eine Hashfunktion macht aus beliebigen Daten einen kurzen Fingerabdruck fester Länge. Dieselbe Eingabe ergibt immer denselben Hash, und ein einziges geändertes Byte verändert das Ergebnis vollständig. Die Algorithmen unterscheiden sich darin, wie schwer sie sich austricksen lassen.

"hello"  MD5      5d41402abc4b2a76b9719d911017c592
"hello"  SHA-256  2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824

MD5 und SHA-1: für Sicherheit gebrochen

Zwei verschiedene Eingaben mit demselben MD5-Hash lassen sich in Sekunden erzeugen, und praktische SHA-1-Kollisionen sind seit 2017 öffentlich. Nutze sie nicht für Signaturen, Zertifikate oder irgendetwas, das ein Angreifer manipulieren könnte. Als schnelle Prüfsumme taugen sie weiterhin, etwa zum Finden doppelter Dateien oder für Cache-Schlüssel.

SHA-256: die sichere Standardwahl

Für Integritätsprüfungen, die Prüfung von Downloads, digitale Signaturen und inhaltsbasierte Adressierung ist SHA-256 aus der SHA-2-Familie die Standardwahl. SHA-3 und BLAKE2 sind moderne Alternativen mit ähnlichem Sicherheitsniveau.

CRC32: gegen Pannen, nicht gegen Angriffe

CRC32 und Adler-32 sind schnelle Prüfsummen, die versehentliche Beschädigungen bei Übertragungen und in Archiven erkennen. Jeder kann absichtlich einen passenden Wert erzeugen, deshalb schützen sie nicht vor Manipulation.

Passwörter nie mit einem schnellen Hash speichern

Das ist der häufigste Fehler. Geschwindigkeit ist genau das, was du bei Passwörtern nicht willst: Eine Grafikkarte probiert Milliarden SHA-256-Hashes pro Sekunde. Nutze einen langsamen, gesalzenen Algorithmus für Passwörter wie Argon2, bcrypt oder scrypt über die Passwort-Bibliothek deines Frameworks.

Hashing, Verschlüsselung und Kodierung sind verschiedene Dinge

Kodierung        Base64, Hex, URL   umkehrbar für jeden, kein Schlüssel
Verschlüsselung  AES, RSA           umkehrbar nur mit dem Schlüssel
Hashing          SHA-256, MD5       Einbahnstraße, nicht umkehrbar

Einen Hash kann man nicht „entschlüsseln“. Websites, die angeblich MD5 umkehren, schlagen den Hash nur in riesigen Tabellen bekannter Eingaben nach. Das klappt bei gängigen Wörtern und kurzen Passwörtern und scheitert an allem, was lang und zufällig ist.

Einen Download prüfen

Viele Projekte veröffentlichen neben ihren Downloads eine SHA-256-Prüfsumme. Berechne den Hash der erhaltenen Datei und vergleiche beide Werte; weicht auch nur ein Zeichen ab, ist die Datei beschädigt oder nicht die, die der Herausgeber veröffentlicht hat. Jedes Betriebssystem hat einen eingebauten Befehl:

Linux        sha256sum file.iso
macOS        shasum -a 256 file.iso
Windows      certutil -hashfile file.iso SHA256
PowerShell   Get-FileHash file.iso -Algorithm SHA256

Hash-Längen

MD5 liefert 128 Bit (32 Hex-Zeichen), SHA-1 160 Bit (40), SHA-256 256 Bit (64) und SHA-512 512 Bit (128). Wenn du beweisen musst, wer eine Nachricht erstellt hat, und nicht nur, dass sie unverändert ist, nimm einen HMAC oder eine digitale Signatur: Einen einfachen Hash kann jeder neu berechnen, der den Inhalt ändert.

Welcher wofür, je eine Zeile

  • Einen Download oder ein Backup prüfen: SHA-256.
  • Signaturen, Zertifikate und alles Sicherheitsrelevante: SHA-256 oder stärker, nie MD5 oder SHA-1.
  • Doppelte Dateien finden oder Cache-Schlüssel bilden: MD5 oder SHA-1 reichen und sind schnell.
  • Übertragungsfehler in einem Protokoll oder Archiv erkennen: CRC32.
  • Passwörter speichern: keiner davon; nutze Argon2, bcrypt oder scrypt.

Warum deine Hashes nicht übereinstimmen

Liefern zwei Tools für den „gleichen“ Text unterschiedliche Hashes, ist die Eingabe fast nie gleich: Ein Zeilenumbruch am Ende, Windows-Zeilenenden oder eine andere Textkodierung ändern das ganze Ergebnis. Der Hash-Generator von 4Dev hasht Text als UTF-8-Bytes wie md5sum, sha256sum und Pythons hashlib und unterstützt 17 Algorithmen, darunter MD5, SHA-1, SHA-2, SHA-3, BLAKE2 und CRC32.

Hash-Generator öffnen

LinkedInXFacebook