Ratgeber

Was ist Base64? Herkunft, Funktionsweise und Einsatz

Erfahren Sie, was Base64 ist, woher es kommt, wie 3 Bytes zu 4 Zeichen werden und wann die Kodierung sinnvoll ist.

Base64 in einem Satz

Base64 ist eine Binär-zu-Text-Kodierung: Jede Bytefolge wird zu einer Zeichenkette aus einem kleinen, weithin kompatiblen Alphabet. Ob die Bytes ein Foto, ein PDF oder ein Wort bilden, ist der Kodierung egal; sie gibt ihnen lediglich eine texttaugliche Verpackung.

Die Umwandlung ist umkehrbar und verlustfrei, aber weder Verschlüsselung noch Hashing oder Kompression.

Woher Base64 stammt

Frühe Netz- und E-Mail-Systeme konnten beliebige 8-Bit-Werte nicht immer unverändert übertragen. Gateways erwarteten druckbaren 7-Bit-Text und konnten Binärdaten verändern. Ältere Verfahren wie uuencode lösten dasselbe Problem; die in RFC 1421 definierte druckbare 64-Zeichen-Kodierung für Privacy-Enhanced Mail ist ein direkter Vorläufer des modernen Base64.

MIME benannte Base64 später als Content-Transfer-Encoding für Nachrichtentexte und Anhänge. RFC 4648 von 2006 ist heute die allgemeine Referenz für das Standard- und das URL-sichere Alphabet. Base64 entstand also durch die Entwicklung interoperabler Standards, nicht als isolierter Einfall.

Warum 64 Zeichen und wie die 3-zu-4-Regel funktioniert

Sechs Bits können genau 64 Werte von 0 bis 63 darstellen. Standard-Base64 ordnet ihnen A–Z, a–z, 0–9, + und / zu. Der Encoder liest drei Bytes, also 24 Bits, und teilt sie neu in vier Gruppen zu je 6 Bits. Jeder Wert dient als Index im Alphabet und erzeugt ein Zeichen.

Bei „Man“ ergeben die ASCII/UTF-8-Bytes die Indizes 19, 22, 5 und 46: T, W, F und u. Das Ergebnis lautet TWFu; beim Dekodieren geht es in die andere Richtung.

„Man“ füllt einen 24-Bit-Block vollständig; Padding ist nicht nötig.
Eingabe
Man
Eingabebytes
01001101 01100001 01101110
6-Bit-Gruppen
010011 010110 000101 101110
Alphabet-Indizes
19 · 22 · 5 · 46
Base64-Ausgabe
TWFu

Padding, Unicode und Base64url

Ein letzter Block mit nur einem Byte erzeugt zwei Datenzeichen plus ==; zwei Bytes erzeugen drei Datenzeichen plus =. Das Padding versteckt nichts, sondern markiert, wie viel des letzten 24-Bit-Blocks echte Daten waren. Manche Protokolle lassen es weg, wenn die Länge anderweitig bekannt ist.

Base64 verarbeitet Bytes. Umlaute, 中文 oder Emoji müssen zuerst, meist als UTF-8, in Bytes umgewandelt werden. Base64url ersetzt für URLs und Dateinamen + und / durch - und _. Das verwandte Alphabet sollte nur gemäß dem jeweiligen Protokoll eingesetzt werden.

Wann Base64 wirklich sinnvoll ist

Typische Fälle sind MIME-Anhänge, PEM-Blöcke für Zertifikate oder Schlüssel sowie data:-URLs für kleine Bilder oder Schriften. JSON und XML können kleine Binärdaten als Base64-Text tragen. HTTP Basic nutzt Base64, JWT-Segmente nutzen base64url; geheim werden die Inhalte dadurch nicht.

Entscheidend ist die Kompatibilität: Der äußere Kanal verlangt Text, die Nutzlast besteht aus Bytes. Wenn Upload, Objektspeicher oder BLOB Binärdaten direkt unterstützen, löst Base64 oft kein zusätzliches Problem.

Kosten bei Größe und Leistung

Je drei vollständige Bytes werden zu vier Zeichen. Die genaue Länge beträgt 4 × ceil(n / 3); der Aufschlag nähert sich bei großen Eingaben 33,3% und kann bei kleinen höher sein. Zeilenumbrüche oder ein data:-URL-Präfix kommen hinzu.

Kompression auf einer anderen Ebene kann die Übertragung verkleinern, doch Kodierung kostet weiterhin Speicher und CPU. Große Dateien lassen sich meist sauberer binär transportieren.

Was Base64 nicht leistet

Base64 bietet weder Vertraulichkeit noch Echtheit. Jeder kann die Zeichenkette ohne Schlüssel dekodieren und verändern. Passwörter, API-Token und personenbezogene Daten werden damit nicht geschützt. Für Geheimhaltung braucht es Verschlüsselung und TLS, für Prüfsummen kryptografische Hashes und für Manipulationsschutz Signaturen oder MACs.

Faustregel: Base64 überquert eine Textgrenze, keine Sicherheitsgrenze.

Technische Quellen