Skip to main content
Security & Privacy

Hashing vs. Verschlüsselung vs. Kodierung: Was oft verwechselt wird

Drei Umformungen, die alle Kauderwelsch erzeugen und verschiedene Probleme lösen, samt gemessener Kosten der falschen Wahl bei Passwörtern.

Von 8 min read
Titelkarte des Artikels. Zwei Kästchenpaare, das obere durch einen einzelnen bernsteinfarbenen Pfeil verbunden, das untere durch Pfeile in beide Richtungen, mit der Zeile: one of these has no way back

Kodierung, Verschlüsselung und Hashing machen aus lesbaren Daten Kauderwelsch, weshalb sie als austauschbar behandelt werden. Sie lösen drei zusammenhanglose Probleme, und die falsche Wahl erzeugt Code, der sicher aussieht und es nicht ist.

Eine Frage trennt sie: Brauchen Sie das Original je zurück, und wenn ja, wer darf es bekommen?

Die drei nebeneinander

Das Wort hello durch Base64-Kodierung, AES-256-GCM-Verschlüsselung und SHA-256-Hashing, mit der jeweils echten Ausgabe und der Frage, wer das Original zurückbekommt
Alle drei Ausgaben sind gleichermassen unlesbar. Nur die mittlere schützt etwas.
  • Kodierung ändert das Format, damit ein anderes System die Daten tragen kann. Kein Schlüssel, für jeden umkehrbar, kein Sicherheitswert.
  • Verschlüsselung verbirgt Daten vor jedem ohne Schlüssel. Mit ihm umkehrbar, und das ist der Sinn.
  • Hashing erzeugt einen Fingerabdruck fester Grösse. Einweg, weil die ursprüngliche Information weg ist.

Kodierung ist ein Transportformat, keine Massnahme

Daten müssen Systeme durchqueren, die nur bestimmte Bytebereiche akzeptieren, also drückt man Bytes in einem freundlicheren Alphabet aus. Base64 bildet auf 64 druckbare Zeichen ab, Hex auf zwei Zeichen pro Byte, URL-Kodierung macht aus einem Leerzeichen %20.

Es gibt keinen Schlüssel und nichts zu knacken:

echo "aGVsbG8=" | base64 -d
hello

Das ist der gesamte Angriff. Prüfen Sie es mit dem Base64-Encoder/Decoder an einer beliebigen Zeichenkette nach.

Kodierung ist wirklich nützlich und wirklich nicht schützend. HTTP Basic Auth ist der klarste Fall: Authorization: Basic <base64> wird in mehr Konzeptpapieren als "verschlüsselte Zugangsdaten" beschrieben, als gut ist, und es ist eine umkehrbare Umformung von Benutzername und Passwort. Genau deshalb darf es nie ausserhalb von TLS reisen.

Gehört zu Ihrem Bedrohungsmodell jemand, der die Daten nicht lesen soll, leistet Kodierung überhaupt nichts.

Verschlüsselung, wenn Sie es zurückbrauchen

Klartext plus Schlüssel ergibt ein Chiffrat, das ohne diesen Schlüssel nutzlos ist. Sie greifen dazu, wann immer die Originaldaten später gebraucht werden: ein OAuth-Refresh-Token in einer Datenbank, eine Datei in einem nicht vollständig kontrollierten Speicher, ein Sitzungs-Payload in einem Cookie.

Nehmen Sie einen authentifizierten Modus. AES-256-GCM liefert Chiffrat und ein Authentifizierungs-Tag, Manipulation scheitert also laut, statt zu plausiblem Müll zu entschlüsseln. Reines CBC ohne separaten MAC gibt Ihnen dieses Signal nicht, und diese Lücke hat echte Schwachstellen erzeugt. Unser AES verschlüsseln/entschlüsseln beherrscht GCM, CBC und CTR auf Text in der Seite, Sie können also zusehen, wie eine falsche Passphrase gar nichts liefert.

Symmetrisch heisst ein Schlüssel in beide Richtungen. AES wohnt hier, es ist schnell, und schwierig ist, den Schlüssel zur Gegenseite zu bekommen.

Asymmetrisch heisst ein Paar aus öffentlichem und privatem Schlüssel, wobei der öffentliche verschlüsselt und nur der private entschlüsselt. RSA und die Kurvenverfahren wohnen hier, sie sind deutlich langsamer, und sie lösen die Verteilung. TLS nutzt asymmetrische Kryptografie nur, um sich auf einen symmetrischen Schlüssel zu einigen, und wechselt dann für den Verkehr zu AES, womit beide Eigenschaften da sind.

Der Test: Wenn jemand verschlüsseln können soll, ohne entschlüsseln zu können, brauchen Sie asymmetrisch.

Hashing erzeugt einen Fingerabdruck, keinen Tresor

Ein kryptografischer Hash bildet jede Eingabe deterministisch und einwegig auf eine Ausgabe fester Grösse ab. SHA-256 liefert 256 Bit, ob Sie einen Buchstaben oder eine Vier-Gigabyte-Datei hineingeben.

"hello"  ->  2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824
"Hello"  ->  185f8db32271fe25f561a6fc938b2e264306ec304eda518007d1764826381969

Ein Grossbuchstabe, eine völlig unverwandte Ausgabe. Dieser Lawineneffekt macht Hashing für Integrität nützlich: Download hashen, mit dem veröffentlichten Wert vergleichen, und ein einziges verändertes Byte fällt auf. Unser Hash-Generator erzeugt SHA-256 und Verwandte lokal.

Zur Algorithmuswahl: MD5 und SHA-1 sind für Sicherheitszwecke erledigt. SHA-1-Kollisionen sind nicht theoretisch, sie wurden konstruiert: zwei verschiedene PDFs mit demselben Wert3. Nehmen Sie SHA-256 oder SHA-3. MD5 bleibt nur dort vertretbar, wo niemand Sie täuschen will, etwa beim Erkennen zufälliger Dateibeschädigung.

Ein Hash ist keine Verschlüsselung, und man kann ihn nicht entschlüsseln. Die Ausgabe ist kleiner als die Eingabe, und es gibt keinen Schlüssel. Was ein Angreifer tun kann, ist raten, den Rateversuch hashen und vergleichen, und genau dort geht Passwort-Code schief.

Der teure Fehler

Die Überlegung ist verführerisch: Hashing ist einwegig, also ist ein gehashtes Passwort sicher, also tut es SHA-256. Es ist eine Schwachstelle, und ihre Grösse ist messbar.

Auf einer RTX 5090 rechnet hashcat 28,4 Milliarden SHA-256-Hashes pro Sekunde gegenüber rund 9.525 bcrypt-Hashes pro Sekunde bei Kosten 10, ein Verhältnis von etwa drei Millionen zu eins
Der grüne Balken ist massstäblich. Drei Pixel sehen so aus, wenn das Verhältnis drei Millionen beträgt.

Auf einer einzelnen RTX 5090 misst hashcat 28.353,3 MH/s gegen SHA-256 und 304,8 kH/s gegen bcrypt bei Kosten 52. Der bcrypt-Kostenfaktor ist eine Zweierpotenz, Kosten 10 sind also das 32-Fache: rund 9.525 Versuche pro Sekunde.

Das ist ein Verhältnis von etwa drei Millionen zu eins. Ein Passwort, das gegen bcrypt vier Stunden Angriff übersteht, fällt gegen SHA-256 in etwa fünf Millisekunden, auf derselben Karte, in derselben Datenpanne. Keine der Funktionen ist kaputt. Eine ist absichtlich schnell, und dieser Zweck ist nicht Passwortspeicherung.

Einfaches Hashing hat ein zweites Problem: Gleiche Passwörter ergeben gleiche Hashes, ein Angreifer hasht also ein Wörterbuch einmal und gleicht es gleichzeitig gegen jede erbeutete Zeile ab.

Salt

Ein Zufallswert, je Nutzerin einmalig, vor dem Hashen beigemischt. Zwei Personen mit demselben Passwort speichern nun verschiedene Hashes, was vorberechnete Tabellen erledigt und den Angreifer zwingt, jedes Konto einzeln anzugehen. Das Salt ist nicht geheim und wird neben dem Hash gespeichert. Seine einzige Aufgabe ist Einmaligkeit.

Eine absichtlich langsame Ableitungsfunktion

Salt verlangsamt nichts, das muss die Funktion selbst tun. OWASPs aktuelle Rangfolge1:

  • Argon2id ist die erste Wahl. Über Speicher, Zeit und Parallelität einstellbar, und die Speicherkosten sind es, die GPUs und ASICs ausbremsen.
  • scrypt ist die Alternative, wenn Argon2 fehlt, ebenfalls speicherhart.
  • bcrypt ist ausdrücklich für Altsysteme gedacht, in denen es keines von beiden gibt. Gut zu wissen: Es ignoriert stillschweigend alles nach den ersten 72 Bytes.
  • PBKDF2 ist nicht speicherhart und hält GPUs am schlechtesten stand, ist aber FIPS-zugelassen, weshalb regulierte Umgebungen es weiter nutzen. OWASP setzt den Arbeitsfaktor für HMAC-SHA256 auf 600.000 Iterationen. Unser PBKDF2-Hash-Generator zeigt, wie Iterationen und Salt in die Ausgabe eingehen.

Beachten Sie, dass bcrypt tiefer steht als in den meisten Artikeln, auch als in der früheren Fassung dieses hier, die es "älter, aber weiterhin respektabel" nannte und als aktuelle gute Wahl führte.

Das Modell, das Sie aus Schwierigkeiten heraushält: Ein schneller Hash ist für Integrität, wo Tempo das Feature ist. Eine langsame Ableitungsfunktion ist für Passwörter, wo Langsamkeit das ganze Produkt ist.

HMAC: ein Hash mit Schlüssel

Ein einfacher Hash belegt, dass eine Nachricht nicht versehentlich verändert wurde. Über den Urheber belegt er nichts, denn jeder kann ihn nachrechnen, also kann jeder die Nachricht ändern und einen passenden Wert nachrechnen.

HMAC mischt einen geheimen Schlüssel in die Konstruktion. Ohne den Schlüssel lässt sich kein gültiges Tag erzeugen, also auch nichts unbemerkt fälschen oder ändern. Das prüft Webhook-Payloads und signierte API-Anfragen: HMAC mit dem gemeinsamen Geheimnis nachrechnen, vergleichen, annehmen. Unser HMAC-Generator macht die Abhängigkeit sichtbar, denn ein geändertes Zeichen im Schlüssel ändert das ganze Tag.

HMAC gibt Integrität und Authentizität, keine Vertraulichkeit. Die Nachricht bleibt lesbar. Soll sie auch verborgen sein, verschlüsseln Sie zusätzlich.

Die Entscheidungstabelle

Ich möchteNehmenNicht
Binärdaten durch einen Textkanal schickenKodierung (Base64, Hex)Irgendetwas namens Verschlüsselung
Daten verbergen und selbst zurücklesenAES-256-GCMHashing, Kodierung
Andere an mich verschlüsseln lassen ohne geteiltes GeheimnisRSA oder ECCSymmetrisch
Nutzerpasswörter speichernArgon2id oder scryptSHA-256, MD5, Kodierung, Verschlüsselung
Prüfen, dass ein Download unverändert istSHA-256Eine langsame KDF
Belegen, dass eine Nachricht von einem vertrauten Absender kommtHMAC-SHA-256Ein einfacher Hash
Zufällige Dateibeschädigung erkennenCRC32, auch MD5Eine langsame KDF

Fünf Arten, wie das schiefgeht

Jede davon ist ein Fehlerbild mit Namen, und jede folgt daraus, ein Werkzeug nach dem Aussehen seiner Ausgabe zu wählen statt nach seiner Funktion.

  1. Base64 in einer Spalte namens encrypted_password. Ein Datenbankexport, und jedes Passwort liegt im Klartext, weil nie etwas verschlüsselt wurde.

  2. Ungesalzenes MD5 für Passwörter. Schnell und kollisionsanfällig, und beides verstärkt sich. Erbeutete Hashes treffen fast sofort auf vorberechnete Tabellen.

  3. Passwörter verschlüsseln statt hashen. Gemacht, damit Logins durch Entschlüsseln und Vergleichen "geprüft" werden können. Das System kann nun jedes Klartextpasswort zurückholen, also genau das Ergebnis, das verhindert werden sollte. Sie brauchen ein Passwort nie zurück, nur ein Ja oder Nein zu einem Login-Versuch, und schon die Existenz eines Entschlüsselungspfads ist der Fehler.

  4. Daten hashen, die man später braucht. Das Spiegelbild. Kontonummern werden SHA-256 gehasht, dann soll sie jemand anzeigen, und die Daten sind weg. Das war von Anfang an eine Verschlüsselungsaufgabe.

  5. Ein einfacher Hash, wo HMAC hingehört. Ein Webhook-Endpunkt hasht den Body und vergleicht ihn mit einem Header, ganz ohne Geheimnis. Jeder kann diesen Hash rechnen, also kann jeder die Anfrage fälschen. Der Schlüssel ist der ganze Punkt.

Zusammenfassung

Kodierung formatiert um und schützt nichts. Verschlüsselung verbirgt Daten vor jedem ohne Schlüssel und ist das, was Sie wollen, wann immer das Original später gebraucht wird. Hashing liefert einen Einweg-Fingerabdruck für Integrität und Prüfung.

Passwörter sind der Fall, in dem die falsche Wahl am teuersten und am besten messbar ist: salzen, durch Argon2id schicken, und verstehen, dass stattdessen zu SHA-256 zu greifen den Durchsatz Ihres Angreifers etwa verdreimillionenfacht.

Wählen Sie nach dem Problem, nicht danach, wie das Kauderwelsch aussieht.

Quellen

Jede Zahl in diesem Artikel lässt sich auf eine Quelle unten zurückführen. Behauptungen ohne Beleg wurden gestrichen, nicht abgeschwächt.

  1. PrimärquelleOWASP

    Dass Argon2id die empfohlene erste Wahl für Passwort-Hashing ist, dass bcrypt nur in Altsystemen verwendet werden sollte, in denen Argon2 und scrypt fehlen, und der empfohlene Arbeitsfaktor von 600.000 Iterationen für PBKDF2-HMAC-SHA256.

  2. PrimärquelleChick3nman

    Die gemessenen Werte einer einzelnen Karte von 28.353,3 MH/s gegen SHA2-256 und 304,8 kH/s gegen bcrypt bei Kosten 5, aus denen der Wert für Kosten 10 abgeleitet ist.

  3. PrimärquelleCWI Amsterdam und Google Research

    Dass eine praktische Kollision für volles SHA-1 vorgeführt wurde, mit zwei verschiedenen PDF-Dateien gleichen SHA-1-Werts.

Themen

In diesem Artikel erwähnte Tools

Neue Tools per E-Mail

Neue Tools und gelegentlich ein ausführlicher Artikel, etwa einmal im Monat. Kein Spam, deine Adresse bekommt niemand, Abmeldung mit einem Klick.

Ähnliche Artikel

Titelkarte des Artikels. Zwei Reihen Chiffreblöcke auf dunklem Raster, die untere endet in einem bernsteinfarbenen Block mit der Aufschrift tag, mit der Zeile: one mode authenticates, one does not
Security & Privacy

AES-GCM vs AES-CBC: Welchen Modus verwenden und warum

Was Blockchiffre-Modi leisten, warum GCM CBC bei neuem Code ersetzt hat, was eine wiederverwendete Nonce preisgibt, und welche NIST-Grenzen dabei Pflicht sind.

Titelkarte des Artikels. Ein Schild, dessen rechte Hälfte bernsteinfarben gefüllt ist, mit der Zeile: what leaves the machine, and when
Security & Privacy Guide

Datenschutz-Leitfaden: Bedrohungsmodelle für Browser-Arbeit

Bedrohungsmodelle, die einen Namen verdienen, der 30-Sekunden-Test statt jeder Datenschutzerklärung, und eine ehrliche Liste, welche unserer Tools hochladen.

Ein rosa Haftnotizzettel mit dem handgeschriebenen Wort password und den Ziffern 123456, auf einer schwarzen Laptoptastatur vor blauem Hintergrund
Security & Privacy

Passwortstärke 2026: Was Länge und Zeichensätze wirklich bringen

Entropie ehrlich gerechnet, NISTs aktuelle Untergrenze von 15 Zeichen und gemessene GPU-Geschwindigkeiten, die zeigen: das Hash-Verfahren wiegt schwerer.