Base64
Base64 ist eine Binär-zu-Text-Kodierung, die Bytes mit einem Alphabet aus 64 Zeichen darstellt.
Definition
Base64 stellt beliebige Bytes als Text dar, damit sie durch textorientierte Systeme übertragen werden können. Das Standardalphabet umfasst lateinische Groß- und Kleinbuchstaben, Ziffern, + und /; am Ende kann = als Füllzeichen stehen.
Base64 ändert nur die Darstellung. Es bietet allein weder Vertraulichkeit noch Authentizität oder Integrität und lässt sich ohne Schlüssel dekodieren.
Funktionsweise
Der Encoder zerlegt 3 Eingabebytes beziehungsweise 24 Bits in vier 6-Bit-Werte und ordnet jedem eines der 64 Zeichen zu. Bleiben am Ende nur 1 oder 2 Bytes, kennzeichnet = gewöhnlich den fehlenden Teil, sodass die Ausgabelänge durch vier teilbar ist.
Bei großen Eingaben wächst die Datenmenge um etwa ein Drittel. Base64url ersetzt + und / durch - und _ und lässt das Padding oft weg; beide Varianten sind daher nicht immer austauschbar.
Praktisches Beispiel
Die ASCII- und UTF-8-Bytes von Hi lauten hexadezimal 48 69. Standard-Base64 stellt sie als SGk= dar. Das Dekodieren liefert dieselben Bytes, deren Interpretation als UTF-8 wieder Hi ergibt.
Base64 kann ebenso ein Bild, komprimierte Daten oder Geheimtext enthalten. Eine erfolgreiche Dekodierung muss keinen lesbaren Text ergeben.
Formate und Stolperfallen
Anwendungen müssen sich über Variante, Padding und erlaubte Leerzeichen einig sein. Ein strenger Decoder kann ablehnen, was ein toleranter akzeptiert. Text wird außerdem zuerst mit einer Zeichenkodierung wie UTF-8 in Bytes umgewandelt; eine andere Zeichenkodierung erzeugt anderes Base64.
Nein. Base64 ist eine öffentliche, umkehrbare Kodierung ohne geheimen Schlüssel. Vertrauliche Daten müssen zunächst mit einem geeigneten kryptografischen Verfahren geschützt werden.
Das Padding füllt die letzte Vierergruppe, wenn die Zahl der Eingabebytes nicht durch drei teilbar ist. Es können ein oder zwei Füllzeichen vorkommen; manche Formate lassen sie weg.
Die Bitgruppierung ist gleich, Base64url verwendet jedoch URL-taugliche Zeichen und häufig kein Padding. Maßgeblich ist die vom jeweiligen Protokoll verlangte Variante.