Funktionen zur Base64-Codierung und Decodierung

Base64 bezeichnet eine bestimmte Übertragungscodierung für MIME-Inhalte. Die Base64-Codierung stellt beliebige Abfolgen von Oktetten in einer Form dar, für die eine Unterscheidung der Groß-/Kleinschreibung erforderlich ist, die jedoch nicht für Menschen lesbar sein muss.

Es wird eine Untergruppe von 65 US-ASCII-Zeichen (US-ASCII - United States of America National Standard Code for Information Interchange) verwendet, sodass sechs Bit durch druckbare Zeichen dargestellt werden können. Das 65. Zeichen ("=") dient zur Bezeichnung einer besonderen Verarbeitungsfunktion.

Bei diesem Codierungsverfahren werden 24-Bit-Gruppen von Eingabebit in Form von Ausgabezeichenfolgen aus je vier codierten Zeichen dargestellt. Eine 24-Bit-Eingabegruppe wird von links nach rechts fortschreitend gebildet, indem drei 8-Bit-Eingabegruppen verkettet werden. Diese 24 Bit werden anschließend als 4 verkettete 6-Bit-Gruppen behandelt, von denen jede in genau eine Stelle des Base64-Alphabets übersetzt wird.

Jede 6-Bit-Gruppe wird als Index für eine Matrix von 64 druckbaren Zeichen verwendet. Das Zeichen, auf das durch den Index verwiesen wird, wird in die Ausgabezeichenfolge gesetzt.

Base64-Alphabet

Wert Codierung  Wert Codierung  Wert Codierung  Wert Codierung
          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üllzeichen) =
         15 P            32 g            49 x
         16 Q            33 h            50 y
Eine besondere Verarbeitung wird ausgeführt, wenn am Ende der Daten, die codiert werden, weniger als 24 Bit verfügbar sind. Am Ende einer Menge wird immer ein vollständiges Codierungsquantum ausgeführt. Wenn weniger als 24 Eingabebit in einer Eingabegruppe verfügbar sind, werden Nullbits (auf der rechten Seite) hinzugefügt, um eine ganzheitliche Anzahl von 6-Bit-Gruppen zu bilden. Das Auffüllen am Ende der Daten erfolgt durch das Zeichen '='. Da jede Base64-Eingabe eine vollständige Anzahl von Oktetten ist, können nur die folgenden Fälle auftreten:
  • Das letzte Quantum der Codierungseingabe ist ein ganzzahliges Vielfaches von 24 Bit. In diesem Fall ist die letzte Einheit der codierten Ausgabe ein ganzzahliges Vielfaches von 4 Zeichen ohne Auffüllung mit dem Zeichen "=".
  • Das letzte Quantum der Codierungseingabe beträgt exakt 8 Bit. In diesem Fall besteht die letzte Einheit der codierten Ausgabe aus zwei Zeichen, gefolgt von zwei Füllzeichen "=".
  • Das letzte Quantum der Codierungseingabe beträgt exakt 16 Bit. In diesem Fall besteht die letzte Einheit der codierten Ausgabe aus drei Zeichen, gefolgt von einem Füllzeichen "=".