Base64 ist ein Begriff aus dem Computerbereich und beschreibt ein Verfahren zur Kodierung von 8-Bit-Binärdaten (z.b. ausführbare Programme, ZIP-Dateien), in eine Zeichenfolge, die nur aus wenigen Codepage-unabhängigen ASCII-Zeichen besteht.
Es findet im Internet-Standard MIME (Multipurpose Internet Mail Extensions) Anwendung und wird damit hauptsächlich zum Versenden von E-Mail-Anhängen verwendet. Nötig ist dies, um den problemlosen Transport von beliebigen Binärdaten zu gewährleisten, da SMTP in seiner ursprünglichen Fassung nur für den Versand von 7-Bit ASCII-Zeichen ausgelegt war.
Zur Kodierung werden die Zeichen A-Z, a-z, 0-9, + und /, verwendet, sowie = am Ende. Da diese Zeichen auch in EBCDIC vorkommen (wenn auch an anderen Code-Positionen), ist damit auch ein Datenaustausch zwischen nicht-ASCII-Plattformen möglich.
Zur Kodierung werden jeweils drei Byte des Bytestroms (=24 bit) in vier 6-bit-Blöcke aufgeteilt. Jeder dieser 6-bit-Blöcke bildet eine Zahl zwischen 0 und 63. Diese Zahlen werden an Hand der nachfolgenden Umsetzungstabelle in "druckbare ASCII-Zeichen" umgewandelt und ausgegeben. Nach jeweils 64 ausgegebenen Zeichen wird ein Zeilenumbruch eingefügt, welcher jedoch ansonsten für die Kodierung nicht von Belang ist.
Falls die Gesamtanzahl der Eingabebytes nicht durch drei teilbar ist, wird zur Kodierung mit Nullbytes aufgefüllt. Um dem Dekodierer mitzuteilen, wie viele Füllbytes angefügt wurden, werden die 6-Bit-Blöcke, die vollständig aus Füllbytes entstanden sind, mit '=' kodiert. Somit können am Ende einer Base64-kodierten Datei 0, 1 oder 2 '='-Zeichen auftreten.
Wert | Zeichen | Wert | Zeichen | Wert | Zeichen | Wert | Zeichen | |||
---|---|---|---|---|---|---|---|---|---|---|
0 | A | 16 | Q | 32 | g | 48 | w | |||
1 | B | 17 | R | 33 | h | 49 | x | |||
2 | C | 18 | S | 34 | i | 50 | y | |||
3 | D | 19 | T | 35 | j | 51 | z | |||
4 | E | 20 | U | 36 | k | 52 | 0 | |||
5 | F | 21 | V | 37 | l | 53 | 1 | |||
6 | G | 22 | W | 38 | m | 54 | 2 | |||
7 | H | 23 | X | 39 | n | 55 | 3 | |||
8 | I | 24 | Y | 40 | o | 56 | 4 | |||
9 | J | 25 | Z | 41 | p | 57 | 5 | |||
10 | K | 26 | a | 42 | q | 58 | 6 | |||
11 | L | 27 | b | 43 | r | 59 | 7 | |||
12 | M | 28 | c | 44 | s | 60 | 8 | |||
13 | N | 29 | d | 45 | t | 61 | 9 | |||
14 | O | 30 | e | 46 | u | 62 | + | |||
15 | P | 31 | f | 47 | v | 63 | / |
Beispiel
Hätten Hüte ein ß im Namen, wären sie möglicherweise keine Hüte mehr, sondern Hüße.
Der Text wird als UTF-8 Base64-Kodiert:
SMOkdHRlbiBIw7x0ZSBlaW4gw58gaW0gTmFtZW4sIHfDpHJlbiBzaWUgbcO2Z2xpY2hlcndlaXNl IGtlaW5lIEjDvHRlIG1laHIsDQpzb25kZXJuIEjDvMOfZS4NCg==
Erkennbar ist hierbei, dass Base64 eine nicht lesbare Kodierung erstellt, im Gegensatz dazu ist ein quoted-printable-kodierter Text mit Ausnahme der Sonderzeichen zumindest teilweise lesbar.
Siehe auch:
quoted-printable, UUencode, Base85