4. Base-64-Kodierung
Die folgende Beschreibung von Base 64 stammt aus [3], [4], [5] und [6]. Diese Kodierung kann als „base64“ bezeichnet werden.
Die Base-64-Kodierung ist darauf ausgelegt, eine beliebige Oktettfolge in einer Form darzustellen, die sowohl Groß- als auch Kleinbuchstaben verwendet, ohne notwendigerweise für Menschen lesbar zu sein.
Die Verwendung eines 65 Zeichen umfassenden Teilsatzes von US-ASCII ermöglicht es, dass jedes druckbare Zeichen 6 Bit darstellt. (Das 65. Zeichen „=“ wird zur Darstellung einer speziellen Verarbeitungsfunktion verwendet.)
Der Kodierungsprozess stellt 24-Bit-Eingabegruppen als Ausgabezeichenfolge von 4 kodierten Zeichen dar. Von links nach rechts werden drei 8-Bit-Eingabegruppen zu einer 24-Bit-Eingabegruppe verkettet. Diese 24 Bit werden dann als vier verkettete 6-Bit-Gruppen betrachtet, von denen jede in ein Zeichen des Base-64-Alphabets umgewandelt wird.
Jede 6-Bit-Gruppe wird als Index in ein Feld von 64 druckbaren Zeichen verwendet. Das durch diesen Index referenzierte Zeichen wird in die Ausgabezeichenfolge eingefügt.
Tabelle 1: Base-64-Alphabet
Wert Kodierung Wert Kodierung Wert Kodierung Wert Kodierung
0 A 17 R 34 i 51 z
1 B 18 S 35 j 52 0
2 C 19 T 36 k 53 1
3 D 20 U 37 l 54 2
4 E 21 V 38 m 55 3
5 F 22 W 39 n 56 4
6 G 23 X 40 o 57 5
7 H 24 Y 41 p 58 6
8 I 25 Z 42 q 59 7
9 J 26 a 43 r 60 8
10 K 27 b 44 s 61 9
11 L 28 c 45 t 62 +
12 M 29 d 46 u 63 /
13 N 30 e 47 v
14 O 31 f 48 w (Füllung) =
15 P 32 g 49 x
16 Q 33 h 50 y
Meldung über das Ende der Eingabe
In den Fällen (2) und (3), in denen die Eingabe nicht ein Vielfaches von 24 Bit ist, erfolgt eine spezielle Behandlung. Ein vollständiges Kodierungsquantum wird immer am Ende eines Datenblocks abgeschlossen. Wenn die Eingabegruppe weniger als 24 Bit aufweist, werden rechts Bits mit dem Wert Null hinzugefügt, um eine ganze Zahl von 6-Bit-Gruppen zu bilden. Die Auffüllung am Ende der Daten erfolgt mit dem Zeichen „=“. Da alle Base-64-Eingaben eine ganze Zahl von Oktetten sind, treten nur die folgenden Fälle auf:
(1) Das letzte Quantum der kodierten Eingabe ist ein Vielfaches von 24 Bit; dann ist die letzte Einheit der kodierten Ausgabe ein Vielfaches von 4 Zeichen, ohne „=“-Auffüllung.
(2) Das letzte Quantum der kodierten Eingabe ist genau 8 Bit; dann ist die letzte Einheit der kodierten Ausgabe zwei Zeichen, gefolgt von zwei „=“-Füllzeichen.
(3) Das letzte Quantum der kodierten Eingabe ist genau 16 Bit; dann ist die letzte Einheit der kodierten Ausgabe drei Zeichen, gefolgt von einem „=“-Füllzeichen.