Was ist Base64
Base64 ist ein Verfahren, Binärdaten in reinen Text zu kodieren. Es verwendet 64 druckbare Zeichen (A-Z, a-z, 0-9, +, /), um beliebige Binärdaten darzustellen und Binärdaten über rein textbasierte Kanäle (JSON, XML, URL, E-Mail) übertragbar zu machen.
Kodierungsprinzip
Zeichentabelle
Base64 verwendet 64 Zeichen: Großbuchstaben A-Z (26), Kleinbuchstaben a-z (26), Ziffern 0-9 (10), Plus +, Schrägstrich /, insgesamt 64. Das Gleichheitszeichen = dient als End-Füllzeichen.
Kodierungsablauf
- Eingabedaten in Blöcke zu 3 Bytes (24 Bit) unterteilen
- Die 24 Bit in 4 Gruppen zu je 6 Bit zerlegen
- Je 6 Bit entsprechen einem Base64-Zeichen (2 hoch 6 = 64, exakt 64 Zeichen)
- Bei weniger als 3 Bytes mit = auffüllen
Beispiel
3 Bytes Eingabe (24 Bit) → 4 Base64-Zeichen. Die Bytezahl nach der Kodierung beträgt also 4/3 der ursprünglichen, also rund 133 %, eine Zunahme von 33 %.
Warum 33 % größer
Ein Byte kann 256 Werte darstellen (8 Bit), jedes Base64-Zeichen nur 64 Werte (6 Bit). Um dieselbe Informationsmenge darzustellen, braucht eine 6-Bit-Kodierung 8/6 = 4/3-mal so viele Zeichen wie eine 8-Bit-Kodierung. Die Größe nach Base64-Kodierung beträgt also 4/3 des Originals, eine Zunahme von 33 %.
Das ist der inhärente Preis von Base64 – Platz wird gegen „Textübertragbarkeit“ eingetauscht.
Kodierungsbeispiel
Text „Man“ (3 Bytes ASCII):
- M = 77 = 01001101
- a = 97 = 01100001
- n = 110 = 01101110
- zu 24 Bit zusammengefügt: 01001101 01100001 01101110
- in 4 Gruppen zu 6 Bit zerlegt: 010011 010110 000101 101110
- entsprechende Base64-Zeichen: T W F u
- Kodierungsergebnis: TWFu
3 Bytes werden zu 4 Bytes, exakt 4/3.
Base64-Varianten
Standard-Base64
Die Zeichentabelle enthält + und /, am Ende wird mit = aufgefüllt. Für allgemeine Fälle geeignet.
URL-sicheres Base64
- und / haben in URLs eine Sonderbedeutung und werden durch - und _ ersetzt. Für URL-Übertragung geeignet.
Base64URL
URL-sichere Variante, häufig in JWT (JSON Web Token) verwendet.
Base64 gegen Base32 gegen Hex
Base64
- 64 Zeichen
- nach Kodierung 33 % größer
- Zeichen umfassen Groß-/Kleinschreibung, Ziffern und +/, Groß-/Kleinschreibung relevant
Base32
- 32 Zeichen (A-Z, 2-7)
- nach Kodierung 60 % größer
- ohne Groß-/Kleinschreibung, vermeidet leicht verwechselbare Zeichen, für manuelle Eingabe geeignet
Hex (Hexadezimal)
- 16 Zeichen (0-9, a-f)
- nach Kodierung 100 % größer (zwei Zeichen pro Byte)
- am einfachsten und kompatibelsten, aber Größe verdoppelt sich
Größe: Hex > Base32 > Base64. Für Kompaktheit Base64, für Kompatibilität und Einfachheit Hex wählen.
Ist Base64 eine Verschlüsselung
Nein. Base64 ist eine Kodierung, keine Verschlüsselung. Jeder kann dekodieren, es gibt keinen Schlüsselschutz. Base64 als Verschlüsselung aufzufassen ist ein schweres Missverständnis – es ist nur ein „Verkleiden“ als unverständlicher Text, Dekodierung ergibt den Klartext.
Sensible Daten mit einem Verschlüsselungsalgorithmus wie AES verschlüsseln; Base64 nur für Transportkodierung verwenden.
Anwendungsfälle
Datenübertragung
Binärdaten über Textkanäle (JSON, XML, URL, E-Mail) übertragen, per Base64 in Text kodieren.
Einbinden kleiner Bilder
Kleine Bilder als Base64 inline in HTML/CSS einbetten, HTTP-Anfragen reduzieren (siehe Base64-Bildverwendung).
JWT
JSON Web Token verwendet Base64URL, um Header und Payload zu kodieren.
Daten-URI
Das data-URL-Protokoll verwendet Base64 zum Einbetten von Ressourcen.
Basic Auth
HTTP-Basic-Authentifizierung verwendet Base64 zur Kodierung von Benutzername und Passwort (Achtung: keine Verschlüsselung, nur mit HTTPS verwenden).
Mit DocsAll kodieren/dekodieren
Das Base64-Kodierungs- und Dekodierungstool:
- Text oder Base64-Zeichenkette eingeben
- Kodieren oder Dekodieren wählen
- per Klick umwandeln
- Ergebnis kopieren
Verarbeitung im Browser, Daten werden nicht übertragen.
Häufige Fallstricke
Als Verschlüsselung missverstanden
Base64 verschlüsselt nicht; sensible Daten nicht nur auf Base64 „verlassen“.
Größenzunahme nach Kodierung
Große Dateien blähen sich bei Base64-Kodierung um 33 % auf, Übertragungs- und Speicherkosten steigen. Wenn ein binärer Kanal verfügbar ist, Base64 vermeiden.
Zeichensatzverwirrung
Standard-Base64 enthält +/; in URLs escapen oder die URL-sichere Variante verwenden. Varianten zu mischen führt zu Dekodierungsfehlern.
Das abschließende = nicht weglassen
Das Füllzeichen = gehört zur Kodierung; Weglassen kann Dekodierungsfehler verursachen. Manche Implementierungen tolerieren das Weglassen, es ist aber nicht normgerecht.
Zusammenfassung
Base64 ist Kodierung, keine Verschlüsselung; es stellt Binärdaten mit 64 Zeichen dar, die Größenzunahme von 33 % ist der inhärente Preis. Zweck ist, Binärdaten über Textkanäle zu übertragen. Für URLs die URL-sichere Variante verwenden. Das DocsAll-Kodierungs-/Dekodierungstool läuft im Browser, Daten werden nicht übertragen.