Was ist Base64?
Base64 ist eine Methode zum Konvertieren von beliebigen Binärdaten, die aus mehr als nur einfachen Textzeichen bestehen, in eine einfache Textnachricht, die dann über ein Computernetzwerk übertragen werden kann. Das nennt man eine Kodierung. Während die Ausgabe einer Base64-codierten Nachricht für einen Menschen nicht leicht verständlich ist, besteht sie immer noch aus 64 gebräuchlichen englischen Zeichen, von denen der Name stammt, und einem zusätzlichen 65. Zeichen, das für spezielle Zwecke verwendet wird.
Die Idee hinter base64 entstand, als das Bedürfnis aufkam, durch vernetzte Kommunikation wie E-Mail mehr als nur einfache Textzeichen zu erhalten. Die ersten E-Mail-Nachrichten begannen mit Zeichen, die im ASCII-Code (American Standard Code for Information Interchange) kodiert wurden. Diese Kodierungsmethode wird auf Computern zur Darstellung von englischen Buchstaben als Text auf Displays oder Druckern verwendet. Als zusätzliche Binärinformation, die benötigt wird, um durchzukommen, wurden neue Codierungsschemata entwickelt.
Die Base64-Codierungsmethode wurde erstmals im sogenannten MIME-Standard (Multipurpose Internet Mail Extensions) beschrieben. Der MIME-Standard definierte Methoden, mit denen andere Zeichen, die nicht ASCII-codiert waren, wie Alphabete, die von nicht englischen Sprachen verwendet wurden, sowie andere beliebige Binärdaten, ebenfalls in ASCII-Sequenzen codiert und per E-Mail übertragen werden konnten. Von den beiden im MIME-Standard beschriebenen primären Codierungsmethoden teilt base64 die Rolle mit einer anderen, als quoted-printable bezeichneten. Während die Methode quoted-printable in der Lage ist, ASCII etwas über die begrenzten 94 druckbaren Zeichen hinaus zu erweitern, kann base64 eine beliebige Folge von Bytes annehmen und in eine ASCII-Folge konvertieren.
Base64 muss Zeichenfolgen von Daten, die sonst nicht dem ASCII-Standard entsprechen, in ASCII konvertieren. Zu diesem Zweck werden bei der Codierungsmethode die Daten in Gruppen von drei Bytes zusammengefasst und in vier Zahlen konvertiert, die entsprechende ASCII-Zeichen darstellen. Da ein Byte aus acht Bits besteht, wobei jedes Bit entweder durch eine Eins oder eine Null dargestellt wird, werden drei Bytes von Ende zu Ende verknüpft, und die gesamte Sequenz wird in einen 24-Bit-Puffer geschrieben. Die 24 Einsen und Nullen werden dann in vier Sechs-Bit-Gruppen aufgeteilt, denen dann Nummern zugewiesen werden, die mit einem ASCII-Zeichen übereinstimmen.
Da base64 beliebige Binärdaten codieren kann, kann eine beliebige Folge von Bytes den Prozess durchlaufen. Es gibt jedoch einen Haken in den Fällen, in denen die Anzahl der zu codierenden Bytes nicht durch drei teilbar ist, damit die Bits in den Puffer passen. Wenn eine Bytesequenz beispielsweise vier oder fünf Bytes enthält, ist noch etwas erforderlich, um den Puffer zu füllen und die vollen 24 Bits zu bilden. In diesen Fällen wird jedes fehlende Byte durch acht Nullen dargestellt und anschließend in der fertigen Codierung in Füllzeichen umgewandelt. Hier kommt das zuvor erwähnte 65. Zeichen her, das in der codierten Nachricht mit einem Gleichheitszeichen (=) dargestellt wird. Es erscheint immer nur ganz am Ende einer Kodierung, wenn ein Füllzeichen erforderlich ist.
Base64 wurde ursprünglich für die Übertragung von Binärdaten per E-Mail entwickelt, seine Verwendung hat jedoch auch in einer Reihe anderer Bereiche als MIME Einzug gehalten. Eine solche recht häufige Verwendung besteht darin, dass Webdatenbanken und -anwendungen Daten für die Erstellung eines URLs (Uniform Resource Locator) in einem Webformular codieren. Die erweiterbare Auszeichnungssprache (XML) verwendet auch eine Variante, mit der Binärdaten, z. B. kleine Bilder, in XML-Dokumenten enthalten sein können. Für Verschlüsselungsmethoden und andere sicherheitsbezogene Techniken wie das Verbergen von Kennwörtern gibt es andere Variationen.