„Das Passwort ist gehasht, also Base64." Diesen Satz habe ich in einem Pull Request gelesen. Er ist falsch. Nicht „technisch nicht ganz korrekt" falsch, sondern „da versteht jemand drei fundamentale Konzepte nicht" falsch. Das ist nicht schlimm — die Begriffe Encoding, Hashing und Encryption werden ständig durcheinandergeworfen, auch von Leuten, die es besser wissen sollten.
Dieser Artikel räumt auf. In 10 Minuten weißt du, was jedes dieser drei Konzepte tut, warum sie grundverschieden sind und wann du welches brauchst. Mit dem Base64 Encoder und dem Hash-Generator von bitcalc als praktischen Werkzeugen.
Die Essenz — in drei Sätzen
Hashing macht Daten vergleichbar. Es ist irreversibel (Einweg-Funktion) und dient der Integrität.
Encryption macht Daten unlesbar. Es ist reversibel mit Schlüssel und dient der Vertraulichkeit.
Drei Wörter, drei Konzepte, drei komplett unterschiedliche Einsatzzwecke. Wer sie verwechselt, baut unsichere Systeme. Wer sie versteht, weiß sofort, welches Tool er braucht.
Encoding: Daten reisefertig machen
Encoding übersetzt Daten von einem Format in ein anderes. Der Schlüsselsatz: Encoding ist kein Geheimnis. Jeder, der den Algorithmus kennt, kann die Daten zurückübersetzen. Es gibt keinen Schlüssel, kein Passwort, nichts.
Das klassische Beispiel ist Base64. Binärdaten (ein Bild, ein PDF, ein SSH-Key) werden in einen ASCII-String umgewandelt, der in JSON, XML, E-Mails oder URLs überleben kann — also überall dort, wo nur druckbare Zeichen erlaubt sind.
# Vorher (UTF-8): Hallo Welt!
# Base64: SGFsbG8gV2VsdCE=
# Und zurück:
echo "SGFsbG8gV2VsdCE=" | base64 -d
# → Hallo Welt!
Andere Encoding-Verfahren: URL-Encoding (%20 für Leerzeichen), Hex-Encoding, HTML-Entities (&). Alles das gleiche Prinzip: Format A → Format B → zurück zu Format A. Kein Geheimnis, keine Sicherheit, nur Transport.
Hashing: Der digitale Fingerabdruck
Eine Hash-Funktion nimmt beliebig viele Daten und produziert einen String fester Länge — den Hash. Drei Eigenschaften machen Hashes besonders:
- Deterministisch: Gleiche Eingabe → gleicher Hash. Immer.
- Irreversibel: Vom Hash kannst du nicht auf die Eingabe zurückschließen. Es ist eine Einbahnstraße.
- Kollisionsresistent: Zwei verschiedene Eingaben sollen praktisch nie denselben Hash liefern.
Wofür Hashes gut sind:
- Passwort-Speicherung: Statt das Passwort selbst zu speichern, speicherst du den Hash. Beim Login wird das eingegebene Passwort gehasht und die Hashes verglichen. Selbst wenn die Datenbank geleakt wird, kennt der Angreifer die Passwörter nicht.
- Integritätsprüfung: Download-Server zeigen einen SHA-256-Hash. Du hasht die heruntergeladene Datei und vergleichst. Stimmt der Hash, ist die Datei unverändert.
- Deduplizierung: Git verwendet SHA-1-Hashes, um Commits und Objekte zu identifizieren.
Warum MD5 und SHA-1 tot sind
MD5 war mal der Standard. Heute generierst du eine MD5-Kollision in Sekunden auf einem Laptop. SHA-1 hat das gleiche Problem. Beide sind kryptographisch gebrochen.
Für neue Projekte: SHA-256 als Minimum. Für Passwörter: argon2id, bcrypt oder scrypt — das sind spezielle Hash-Funktionen, die absichtlich langsam sind und einen Salt verwenden, um Rainbow-Table-Angriffe zu verhindern.
Encryption: Daten unsichtbar machen
Encryption (Verschlüsselung) macht Daten für Unbefugte unlesbar — aber mit dem richtigen Schlüssel wiederherstellbar. Das unterscheidet sie fundamental vom Hashing: Ein Hash ist eine Einbahnstraße, Encryption ist eine Tür mit Schlüssel.
Zwei große Familien:
Symmetrische Verschlüsselung (AES, ChaCha20)
Ein Schlüssel für Ver- und Entschlüsselung. Schnell, effizient, gut für große Datenmengen. Das Problem: Sender und Empfänger müssen denselben Schlüssel kennen. Wie teilt man den sicher?
Asymmetrische Verschlüsselung (RSA, ECC)
Zwei Schlüssel: Public Key (verschlüsseln) und Private Key (entschlüsseln). Jeder kann etwas mit deinem Public Key verschlüsseln — aber nur du hast den Private Key, um es zu lesen. Langsamer als symmetrisch, aber löst das Schlüsselaustausch-Problem.
In der Praxis kombiniert man beide: TLS (das Schloss im Browser) handelt mit asymmetrischer Kryptographie einen symmetrischen Session-Key aus und verschlüsselt dann den Rest der Verbindung mit AES.
Die drei Konzepte im direkten Vergleich
| Eigenschaft | Encoding | Hashing | Encryption |
|---|---|---|---|
| Reversibel? | ✅ Ja, ohne Schlüssel | ❌ Nein (Einweg) | ✅ Ja, mit Schlüssel |
| Benötigt Schlüssel? | Nein | Nein | Ja |
| Ausgabe-Größe | Variabel (~133% bei Base64) | Fest | Ähnlich Eingabe |
| Schutzziel | Transportfähigkeit | Integrität | Vertraulichkeit |
| Typische Tools | Base64, URL-Encode, Hex | SHA-256, bcrypt, argon2 | AES-256-GCM, ChaCha20 |
| bitcalc-Tool | Base64 Encoder/Decoder | Hash-Generator | — |
Praxisbeispiele: Wer es falsch macht
- „Base64-verschlüsselte Passwörter." Nein. Base64 ist Encoding. Jeder kann es decodieren. Wer Passwörter in Base64 „schützt", hat sie effektiv im Klartext gespeichert.
- „MD5-Hash als Passwortschutz." Nein. MD5 ist für Passwörter ungeeignet — zu schnell, keine Salts, bekannte Kollisionen. Ein MD5-gehashtes Passwort wird mit rainbow tables oder massivem GPU-Durchsatz in Minuten geknackt.
- „Wir hashen die Konfigurationsdatei." Nein. Eine gehashte Config-Datei kannst du nicht zurücklesen. Wenn du die Daten wieder brauchst, musst du verschlüsseln, nicht hashen.
Willst du nur prüfen, ob etwas gleich geblieben ist? → Hashing.
Willst du Daten in einem anderen Format darstellen? → Encoding.
Die bitcalc-Tools für deinen Alltag
Der Base64 Encoder/Decoder encodiert und decodiert live beim Tippen — kein Terminal, kein Online-Tool. Der Hash-Generator unterstützt MD5, SHA-1, SHA-256 und SHA-512 und zeigt den Hash sofort an. Beide arbeiten komplett clientseitig — deine Daten verlassen den Browser nie.