Zum Hauptinhalt springen

← Zurück zum Blog

Ist Base64 Verschlüsselung? Kodierung vs. Verschlüsselung erklärt

Es ist einer der häufigsten Irrtümer in der Softwareentwicklung: Jemand sieht einen String wie cGFzc3dvcmQ= und nimmt an, die Daten seien „verschlüsselt”. Sind sie nicht. Base64 ist Kodierung, keine Verschlüsselung — und die beiden zu verwechseln kann zu echten Sicherheitsfehlern führen. Klären wir das.

Hier ist der Beweis, nicht die Behauptung. Nimm das Standard-Beispiel-Token aus der JWT-Dokumentation und füge es in unseren JWT-Decoder ein. Ohne irgendeinen Schlüssel gibt er sofort aus:

{ "alg": "HS256", "typ": "JWT" }
{ "sub": "1234567890", "name": "John Doe", "iat": 1516239022 }

Die Payload dieses Tokens ist Base64url, und Base64 ist eine Transport-Kodierung mit öffentlichem Alphabet — kein Geheimnis im Spiel. Alles so Kodierte kann jeder lesen, der sich die Mühe macht. Nur die Signatur braucht einen Schlüssel, und sie schützt vor Manipulation, nicht vor Lesen. Stecke nie Vertrauliches in einen Base64-String und nenne es geschützt.

Was Base64 tatsächlich tut

Base64 stellt beliebige Bytes mit 64 druckbaren Zeichen dar (A–Z, a–z, 0–9, +, /). Sein Zweck ist der Transport: Es lässt dich Binärdaten oder Sonderzeichen durch Kanäle schleusen, die nur Text verarbeiten — E-Mail-Text, JSON-Felder, Data-URIs, JWT-Segmente und so weiter.

Entscheidend: Base64 verwendet keinen Schlüssel und kein Geheimnis. Jeder kann es in Sekundenbruchteilen zurückwandeln. Probier es: Füge cGFzc3dvcmQ= in das Base64-Tool ein, und du erhältst sofort password zurück.

Hier die Behauptung als Ausgabe. Jede Zeile lief durch unseren Base64-Encoder; füge einen der rechten Werte auf derselben Seite wieder ein, schalte auf Dekodieren, und die linke Spalte kommt genau zurück. An keiner Stelle ist ein Schlüssel beteiligt — es gibt keinen Platz für einen.

EingabeBase64
secretc2VjcmV0
admin:passwordYWRtaW46cGFzc3dvcmQ=
{"role":"admin"}eyJyb2xlIjoiYWRtaW4ifQ==
Hello, World!SGVsbG8sIFdvcmxkIQ==

Kodierung vs. Verschlüsselung

Kodierung (Base64)Verschlüsselung
ZielDaten transportsicher machenDaten für andere unlesbar machen
Schlüssel/GeheimnisKeinsJa — ein Schlüssel ist nötig
Von jedem umkehrbar?Ja, trivialNein, nur mit dem Schlüssel
Bietet Vertraulichkeit?❌ Nein✅ Ja

Kodierung dreht sich um Darstellung. Verschlüsselung um Geheimhaltung. Sie lösen völlig verschiedene Probleme.

Die zweite Zeile ist kein konstruiertes Beispiel. Genau das sendet HTTP-Basic-Authentifizierung: admin:password wird YWRtaW46cGFzc3dvcmQ=, und der Header lautet Authorization: Basic YWRtaW46cGFzc3dvcmQ=. Wer die Anfrage sieht, liest das Passwort — deshalb ist Basic Auth nur über TLS akzeptabel: Die Geheimhaltung liefert der Transport, die Kodierung liefert keine. Die dritte Zeile ist derselbe Fehler im anderen Kostüm: eyJyb2xlIjoiYWRtaW4ifQ== sieht undurchsichtig aus und dekodiert in einem Schritt zu {"role":"admin"} — so ein Wert in einem Cookie ist eine Berechtigung, die sich der Nutzer selbst ausstellen kann.

Ein verwandtes Konzept: Hashing

Base64 wird auch mit Hashing verwechselt. Hashing (wie SHA-256) ist eine Einwegfunktion — man kann das Original nicht aus der Ausgabe rekonstruieren — und dient Integritätsprüfungen und Passwortspeicherung, nicht dem Transport. Zum Experimentieren zeigt unser Hash-Generator, wie dieselbe Eingabe stets denselben Fingerabdruck fester Länge erzeugt.

Es gibt also drei verschiedene Ideen:

  • Kodierung (Base64): von jedem umkehrbar, für den Transport.
  • Hashing (SHA-256): einweg, für Integrität.
  • Verschlüsselung (AES, RSA…): nur mit Schlüssel umkehrbar, für Geheimhaltung.

Der Sicherheitsfehler, den man vermeiden sollte

Verwende Base64 niemals, um ein Passwort, einen API-Schlüssel oder einen sensiblen Wert zu „verstecken”. Da es trivial umkehrbar ist, bietet Base64-Kodierung eines Geheimnisses null Schutz. Brauchst du Vertraulichkeit, nutze echte Verschlüsselung (z. B. TLS bei der Übertragung, AES im Ruhezustand) und speichere Zugangsdaten ordentlich.

Ein brauchbarer Test, ob etwas Verschlüsselung ist: Frage, was geheim sein müsste. Bei c2VjcmV0 ist es nichts — der Algorithmus ist öffentlich, das Alphabet ist öffentlich, und es gibt keinen Schlüsselparameter zu schützen. Verschlüsselung ohne Geheimnis ist keine Verschlüsselung, sondern dieselben Daten anders geschrieben.

Wann Base64 das richtige Werkzeug ist

Base64 ist perfekt, wenn du legitim Binär- oder Sonderdaten durch einen Textkanal bewegen musst:

  • Ein kleines Bild als Data-URI in HTML oder CSS einbetten.
  • Die Segmente eines JWT prüfen oder zusammensetzen.
  • Binärinhalt durch eine JSON-API übertragen.
  • Sonderzeichen sicher in einen Wert setzen.

Nutze es für das, wofür es gebaut ist — Darstellung — und greife zur Verschlüsselung, wenn du Geheimhaltung brauchst. Mit unserem kostenlosen, browserbasierten Base64-Tool (volle UTF-8-Unterstützung) kannst du kodieren und dekodieren.