Wie Sie MD5-, SHA-256- und andere Hashes erzeugen
Hashing wandelt eine beliebige Eingabe (ein Passwort, eine Datei, eine Nachricht) in eine Zeichenkette fester Länge um. Dieselbe Eingabe ergibt immer denselben Hash, aber selbst eine winzige Änderung der Eingabe ergibt einen komplett anderen Hash. Damit ist Hashing essenziell für Integritätsprüfung, Passwortspeicherung, digitale Signaturen, Blockchain-Beweise und Dutzende weitere Bausteine moderner Informatik. Den richtigen Algorithmus wählen, wissen warum manche gebrochen sind, und die Muster erkennen, die Hashes missbrauchen, macht aus einem Fünf-Sekunden-Werkzeug ein Fundament, auf dem man sicher aufbauen kann.
Eine kurze Geschichte der Hashfunktionen
Hashing als Programmieridee ist Jahrzehnte älter als die Kryptografie, Hashtabellen in Datenstrukturen verwenden einfache Funktionen wie CRC und FNV, um Schlüssel auf Buckets zu verteilen. Kryptografische Hashes, entworfen, um irreversibel und kollisionsresistent zu sein, traten Ende der 1980er auf, mit Ron Rivests MD4 (1990) und MD5 (1991). MD5 wurde zwei Jahrzehnte lang zur De-facto-Prüfsumme, bis praktische Kollisionen es für Sicherheitsarbeit unsicher machten.
NISTs SHA-0 (1993) wurde fast sofort zurückgezogen und durch SHA-1 (1995) ersetzt. SHA-1 hielt länger, fiel aber stufenweise: theoretische Angriffe 2005, ein praktisches Szenario zur Zertifikatsfälschung bis 2009, und Googles SHAttered-Demonstration 2017, zwei verschiedene PDFs mit demselben SHA-1-Hash. Die SHA-2-Familie (SHA-224, SHA-256, SHA-384, SHA-512), 2001 veröffentlicht, wurde als längerfristiger Ersatz entworfen und ist bis heute sicher. SHA-3 (Keccak, 2015 standardisiert) ist ein strukturell anderer Entwurf, gedacht als Backup, falls SHA-2 jemals fällt.
Parallel dazu entwickelten sich passwortspezifische Hashes getrennt. Reines MD5 oder SHA-1 erwies sich als zu schnell für Passwortspeicherung, also fügten bcrypt (1999), scrypt (2009) und Argon2 (2015, Gewinner der Password Hashing Competition) absichtliche Langsamkeit und Speicherhärte hinzu, um Brute-Force-Angriffe um Größenordnungen teurer zu machen. Der richtige Hash für ein Passwort ist nie derselbe wie der richtige Hash für eine Dateiprüfsumme.
Wie Hashing funktioniert
Eine Hashfunktion nimmt eine Eingabe beliebiger Größe und erzeugt eine Ausgabe fester Größe:
| Eingabe | SHA-256-Hash (erste 16 Zeichen) |
|---|---|
| hello | 2cf24dba5fb0a30e... |
| Hello | 185f8db32271fe25... |
| hello! | ce06092fb948d9ff... |
Beachten Sie, dass das Ändern eines einzelnen Zeichens (h klein zu H groß) oder das Hinzufügen eines Zeichens den Hash vollständig verändert. Das heißt Avalanche-Effekt und ist das, was Hashes nützlich macht, um jede noch so winzige Änderung zu erkennen.
Intern teilt eine moderne Hashfunktion ihre Eingabe in Blöcke fester Größe (64 Bytes für SHA-256, 128 für SHA-512), führt jeden Block durch eine Kompressionsfunktion und kettet den Zustand vorwärts. Die Ausgabe ist der Endzustand, nachdem der letzte Block eingemischt wurde. Da die Kette von jedem Byte abhängt, lässt keine Abkürzung einen Angreifer die Eingabe ändern, ohne den gesamten Hash neu zu schreiben.
Ein guter kryptografischer Hash hat drei Sicherheitseigenschaften: Pre-Image-Resistenz (Sie können keine Eingabe finden, die einen bestimmten Hash ergibt), Second-Pre-Image-Resistenz (gegeben eine Eingabe, finden Sie keine andere mit demselben Hash) und Kollisionsresistenz (Sie finden keine zwei verschiedenen Eingaben mit demselben Hash). MD5 scheitert an allen drei; SHA-1 scheitert an der Kollisionsresistenz; SHA-2 und SHA-3 halten alle drei noch.
Gängige Hash-Algorithmen
| Algorithmus | Ausgabebits | Länge | Status | Anwendung |
|---|---|---|---|---|
| MD5 | 128 | 32 hex | Gebrochen (unsicher) | Legacy-Prüfsummen, Nicht-Sicherheitsverwendung |
| SHA-1 | 160 | 40 hex | Gebrochen (unsicher) | Nur Altsysteme |
| SHA-224 | 224 | 56 hex | Sicher (nischenhaft) | SHA-256 bevorzugen |
| SHA-256 | 256 | 64 hex | Sicher | Dateiintegrität, digitale Signaturen |
| SHA-384 | 384 | 96 hex | Sicher | TLS-1.3-Cipher-Suites |
| SHA-512 | 512 | 128 hex | Sicher | Hochsicherheitsanwendungen, 64-Bit-Leistung |
| SHA3-256 | 256 | 64 hex | Sicher | Zukunftssichere Alternative zu SHA-256 |
| BLAKE2b / BLAKE3 | 256 oder 512 | variabel | Sicher, sehr schnell | rsync, restic, Massen-Hashing |
| HMAC-SHA256 | 256 | 64 hex | Sicher | API-Anfragen-Signatur |
| bcrypt | 184 | 60 Zeichen (eigen) | Sicher für Passwörter | Passwortspeicherung |
| Argon2id | konfigurierbar | variabel | Bestes für Passwörter | Moderne Passwortspeicherung |
| CRC32 | 32 | 8 hex | Nur Fehlererkennung | Kein Sicherheitshash |
SHA-256 ist der aktuelle Standard für die meisten Allzweckanwendungen. MD5 und SHA-1 sollten nur verwendet werden, wenn sie für Altsysteme nötig sind; niemals für Sicherheitsgrenzen. Für Passwörter verwenden Sie bcrypt oder Argon2id, nicht rohes SHA-256.
So generieren Sie einen Hash
- Wählen Sie Ihren Algorithmus: MD5, SHA-1, SHA-256, SHA-384 oder SHA-512 aus dem Dropdown auswählen. Verwenden Sie SHA-256, sofern kein besonderer Grund für eine andere Wahl spricht.
- Text eingeben oder Datei hochladen: Tippen oder fügen Sie Text in das Eingabefeld ein oder ziehen Sie eine Datei hinein. Das Werkzeug führt den Hash vollständig in Ihrem Browser über die Web-Crypto-API aus.
- Hash kopieren: Das Ergebnis ist eine Hex-Zeichenkette, die Sie zur Verifikation, Speicherung oder zum Vergleich verwenden können. Viele Tools bieten zudem Base64-Codierung für kompakte Speicherung.
- Bei Bedarf vergleichen: Fügen Sie den veröffentlichten Hash neben Ihren erzeugten Hash ein und lassen Sie das Tool das erste abweichende Zeichen markieren. Visuelle Vergleiche von 64-Zeichen-Strings sind fehleranfällig.
Praktische Anwendungen
Dateiintegritätsprüfung: Laden Sie eine Datei herunter und vergleichen Sie ihren Hash mit dem offiziellen Hash des Herausgebers. Stimmen sie überein, ist die Datei authentisch und unverändert. Das ist der Anwendungsfall hinter den meisten alltäglichen Hash-Generierungen, der Ablauf hinter jedem sha256sum-Aufruf unter Linux und jeder Checksums-Seite auf einer Software-Download-Seite.
Passwortspeicherung, Anwendungen speichern Hashes von Passwörtern, nicht die Passwörter selbst. Beim Login wird Ihre Eingabe gehasht und mit dem gespeicherten Hash verglichen. Das entscheidende Detail ist, dass der Algorithmus absichtlich langsam sein muss (bcrypt, Argon2), damit ein Angreifer, der die Hash-Datei stiehlt, sie nicht in vertretbarer Zeit per Brute Force knacken kann.
Datendeduplizierung: Speichersysteme und Backup-Tools hashen Datenstücke, oft Blöcke von einigen Megabytes, und verwenden den Hash als Schlüssel. Zwei Stücke mit demselben Hash werden als identisch angenommen, sodass das zweite Vorkommen nur einen Verweis speichert. Tools wie restic, borg und viele Cloud-Backup-Dienste hängen davon ab.
Digitale Signaturen: Eine digitale Signatur ist ein mit einem privaten Schlüssel verschlüsselter Hash. Der Verifizierer hasht das Dokument, entschlüsselt die Signatur mit dem öffentlichen Schlüssel und prüft, ob beide übereinstimmen. Das beweist sowohl, dass das Dokument nicht verändert wurde, als auch, dass der Unterzeichner genau diese Version freigegeben hat.
HMAC für API-Sicherheit: HMAC kombiniert eine Hashfunktion mit einem geheimen Schlüssel und erzeugt einen Tag, den jeder mit demselben Schlüssel verifizieren kann. Webhooks, AWS-Request-Signing und viele interne RPCs verwenden HMAC-SHA256, damit der Empfänger weiß, dass die Anfrage wirklich aus einer vertrauenswürdigen Quelle stammt.
Blockchain und Merkle-Bäume: Kryptowährungen, content-adressierter Speicher (IPFS) und Git verwenden Hash-Bäume, um sich auf große Datenmengen mit einem einzigen Wurzel-Hash festzulegen. Ändern Sie ein Byte irgendwo im Baum, ändert sich der Wurzel-Hash, diese Eigenschaft macht die Daten manipulationssicher.
Cache-Schlüssel: Cache-Systeme hashen Request-URLs oder Query-Parameter, um einen kompakten Lookup-Schlüssel zu erzeugen. CRC und SipHash sind hier gängig, da sie Geschwindigkeit über kryptografische Garantien stellen.
Hash vs HMAC vs digitale Signatur
Diese drei Konzepte werden oft verwechselt, weil sie alle ähnlich aussehende Hex-Strings ausgeben.
| Konzept | Eingaben | Verifiziert | Übliche Verwendung |
|---|---|---|---|
| Hash | Daten | Daten unverändert seit Hash-Berechnung | Prüfsummen, content-Adressierung |
| HMAC | Daten + geteiltes Geheimnis | Daten unverändert UND von jemandem mit dem Geheimnis erzeugt | API-Anfragen-Signierung, Webhooks |
| Digitale Signatur | Daten + privater Schlüssel | Daten unverändert UND mit einem bestimmten Schlüssel signiert | TLS-Zertifikate, Software-Signierung |
| Verschlüsselung | Daten + Schlüssel (beliebig) | Daten blieben im Transit geheim | Vertraulichkeit (nicht nur Integrität) |
Ein reiner Hash beweist nichts darüber, wer ihn erzeugt hat. HMAC beweist, dass der Sender das geteilte Geheimnis hatte. Eine Signatur identifiziert zusätzlich den Unterzeichner, ohne das Geheimnis teilen zu müssen. Wählen Sie das schwächste Werkzeug, das Ihr eigentliches Problem löst.
Häufige Fallstricke
- MD5 oder SHA-1 für Sicherheit verwenden, beide sind kryptografisch gebrochen. Kollisionen lassen sich in Sekunden (MD5) oder Stunden auf Cloud-Hardware (SHA-1) erzeugen. Reservieren Sie sie strikt für Nicht-Sicherheits-Prüfsummen.
- Passwörter mit Allzweck-Hashes hashen, einfaches SHA-256 auf ein Passwort ist schnell genug, dass ein Angreifer mit einer gestohlenen Datenbank auf einer GPU Milliarden Versuche pro Sekunde unternehmen kann. Verwenden Sie stattdessen bcrypt, scrypt oder Argon2id.
- Salt vergessen, zwei Benutzer mit demselben Passwort sollten niemals denselben gespeicherten Hash erzeugen. Salting (Hinzufügen zufälliger Bytes zu jedem Passwort vor dem Hashing) verhindert das und stoppt Rainbow-Table-Abfragen.
- Einem Hash trauen, der von demselben Ort wie die Datei kommt, ein Angreifer, der einen Download-Mirror kompromittiert, kann sowohl die Datei als auch ihren Hash austauschen. Holen Sie den Hash, wann immer möglich, von einer anderen Domain oder verifizieren Sie eine GPG-Signatur über die Hash-Liste.
- Hex vs Base64 verwechseln, derselbe Hash kodiert sich als 64 Hex-Zeichen oder 44 Base64-Zeichen. Unterschiedliche Kodierungen zu vergleichen scheitert immer. Passen Sie die Kodierung vor dem Vergleich an.
- Mit
==in Sicherheitscode vergleichen, String-Vergleich bricht beim ersten abweichenden Zeichen ab, was Timing-Informationen leakt. Verwenden Sie in jedem Code, der Authentifizierung entscheidet, eine konstante-Zeit-Vergleichsfunktion. - Einen Hash kürzen, um Platz zu sparen, nur die ersten 8 Zeichen von SHA-256 zu nehmen, senkt die Kollisionsresistenz von astronomisch auf trivial. Speichern Sie entweder den vollständigen Hash oder verwenden Sie einen für kurze Ausgaben entworfenen Hash (SipHash).
- Einen CRC für Sicherheit verwenden, CRC32 erkennt zufällige Beschädigungen gut, lässt sich aber trivial fälschen. Jeder kann Bytes anhängen, damit ein CRC einen beliebigen Wert ergibt.
- Erneutes Hashen statt PBKDF, SHA-256 zehntausendmal von Hand zu schleifen ist der klassische selbstgebaute Passwort-Hash; er leakt Timing und ist viel langsamer als die gut auditierten PBKDF2/bcrypt/Argon2-Implementierungen.
- Hash neben dem Salt mit demselben Hash bei jedem Login speichern, ein Angreifer, der Hash und Salt liest, muss nur ein Passwort auf einmal knacken; wenn Sie aber einen einzigen globalen Salt für alle Benutzer wiederverwenden, knackt eine einzige Rainbow Table alle. Jeder Benutzer bekommt einen frischen zufälligen Salt.
Alternative Werkzeuge und Bibliotheken
Der Browser-Hash-Generator ist der schnellste Weg für einmalige Hashes. Für wiederholten Gebrauch oder Skripte übernehmen Kommandozeilen-Werkzeuge und Sprachbibliotheken.
| Werkzeug | Plattform | Stärke | Achten Sie auf |
|---|---|---|---|
| Web-Hash-Generator | Browser | Sofort, keine Installation, kein Upload | Eine Eingabe auf einmal |
sha256sum, md5sum | Linux | Skriptbar, GNU coreutils | --check liest SHA256SUMS-Dateien |
shasum -a 256 | macOS, BSD | Mit dem OS gebündelt | Anderer Binärname als unter Linux |
Get-FileHash | Windows PowerShell | Erstklassig unter Windows | Ausgabeformat unterscheidet sich von sha256sum |
openssl dgst -sha256 | Plattformübergreifend | Wenn Sie ohnehin OpenSSL haben | Langsamer als spezialisierte Werkzeuge |
b3sum / BLAKE3-CLI | Plattformübergreifend | Mehrere GB/s Durchsatz | Neuer, weniger allgegenwärtig |
Python hashlib | Python | Eingebaut, alle wichtigen Algorithmen | Bei Bytes-Eingaben bleiben |
Node crypto | Node.js | Eingebaut, API ähnlich zu Python | Streaming für große Dateien |
Web Crypto subtle.digest | Browser-JS | Nativ, schnell, ohne Abhängigkeit | Nur asynchrone API |
| HashiCorp Vault / KMS | Cloud | Zentrale Schlüsselverwaltung für HMAC und Signaturen | Anbieterbindung |
Bei Passwörtern behandeln Sie das Sprach-Ökosystem anders: verwenden Sie bcrypt, argon2-cffi, passlib oder den empfohlenen Adapter Ihrer Plattform, niemals eine handgeschriebene SHA-Schleife.
Datenschutz und der Hash-Generator
Der Hash-Generator läuft vollständig in Ihrem Browser. Der Text, den Sie tippen, wird im Speicher über die SubtleCrypto-Schnittstelle von Web Crypto gehasht, und jede ausgewählte Datei wird über die FileReader-API gestreamt, ohne Upload. Es gibt kein Protokoll, welche Eingaben gehasht wurden, keine Analytik darüber, welche Algorithmen beliebt sind, und keine Möglichkeit für irgendjemanden, zu rekonstruieren, was Sie verifiziert haben. Hashes selbst fassen oft sensibles Material zusammen, Passwörter, interne Dokumente, private Schlüssel, genau die Art von Daten, die Sie nie in das Formular eines Fremden einfügen sollten. Die Arbeit clientseitig zu erledigen, hält die Eingabe auf Ihrer Maschine, wo sie hingehört. Für eine Aufgabe, die so routiniert ist wie das Erzeugen einer Prüfsumme, sollte die Datenschutz-Voreinstellung sein: nichts verlässt die Seite, nichts wird gespeichert, nichts wird geteilt.
Häufig gestellte Fragen
Was ist der Unterschied zwischen MD5, SHA-1 und SHA-256?
MD5 erzeugt einen 128-Bit-Hash (32 Hex-Zeichen), SHA-1 160 Bit (40 Zeichen) und SHA-256 256 Bit (64 Zeichen). MD5 und SHA-1 gelten kryptografisch für Sicherheitszwecke als gebrochen. SHA-256 ist derzeit sicher und wird für Integritätsprüfung und Sicherheitsanwendungen empfohlen.
Kann man einen Hash umkehren, um die ursprünglichen Daten zu erhalten?
Nein. Hash-Funktionen sind per Design Einwegfunktionen. Ein Hash lässt sich mathematisch nicht in seine Eingabe zurückrechnen. Allerdings finden sich gängige Passwörter in vorberechneten Lookup-Tabellen (Rainbow-Tabellen), daher sollten Passwörter vor dem Hashen mit Salt versehen werden.
Was ist HMAC?
HMAC (Hash-based Message Authentication Code) kombiniert eine Hash-Funktion mit einem geheimen Schlüssel. Es prüft sowohl die Datenintegrität als auch die Authentizität, beweist, dass die Daten nicht manipuliert wurden und von jemandem stammen, der das Geheimnis kennt.
Werden meine Daten beim Erzeugen von Hashes an einen Server gesendet?
Nein. Sämtliches Hashing läuft in Ihrem Browser über die Web Crypto API. Ihre Texte und Dateien verlassen Ihr Gerät nie.
Why should I never use MD5 or SHA-1 for password storage even with a salt?
Both algorithms are extremely fast, which is the opposite of what you want for passwords. An attacker with a stolen hash file can try billions of guesses per second on a GPU. Password-hashing functions like bcrypt, scrypt, and Argon2 are deliberately slow and memory-hard, which forces attackers to spend orders of magnitude more time per guess.
When should I use SHA-512 instead of SHA-256?
On 64-bit CPUs, SHA-512 is often slightly faster than SHA-256 because its inner state and word size are tuned to 64-bit operations. Use SHA-512 when you want a longer digest (128 hex characters) for collision resistance margin, or when you are already in a SHA-512 ecosystem (TLS 1.3 with certain cipher suites, some HMAC implementations).