HomeKontaktImpressum
Sie sind hier: Home

Base64 Encoder und Decoder

Bevor eine Binärdatei, wie beispielsweise eine Rastergraphik, in den Quellcode einer HTML-Seite oder in das durch eine Website genutzte Stylesheet eingebettet werden kann, müssen die Daten ersteinmal in den Base64-Code überführt werden. Der im Browser enthaltene Base64-Decoder entschlüsselt die ASCII-Daten und kann das auf diese Weise kodierte Bild darstellen. Die Funktionsweise des Encoders ist denkbar einfach.

Mit Base64 lassen sich beliebige 8-Bit Binärdaten in eine Zeichenkette bringen, die ausschliesslich aus druckbaren ASCII-Zeichen besteht. Diese Kodierung erlaubt die Zeichen A bis Z – jeweils in Groß- und Kleinschreibung –, die Ziffern 0 bis 9 sowie die Zeichen + und /. Damit umfasst der Code insgesamt 64 verschiedene Zeichen. Als Grundlage diese Codes wird eine Zeichentabelle genutzt, die den unterschiedlichen Zeichen einen Dezimalindex von 0 bis 63 zuordnet. Da nun diese 64 Zeichen durch einen 6-Bit-Binärcode unterscheidbar sind, kommt der Code mit eben dieser Bitbreite zur Kodierung von Informationen aus.

Zeichensatz
Abb. 1: Zeichensatz der Base64-Kodierung

Dabei arbeitet der Base64-Encoder auf denkbar einfache Weise: Während der Kodierung werden immer drei Bytes der zu kodierenden Quelldaten betrachtet. Diese mittels 24-Bit kodierten Zeichen werden in vier 6-Bit-Blöcke aufgeteilt, aus denen sich die Base64-Indexe der zugehörigen Zeichens ergeben. Nun wird in der Zeichentabelle das korrespondierende Zeichen zu jedem Indexwert ermittelt, woraus sich vier ASCII-Zeichen ergeben, welche die zur Quellzeichenkette gehörende Zeichenfolge ergibt. Die folgende Abbildung zeigt einen solchen Kodierungsablauf mit den einzelnen Schitten.

Kodierungsbeispiel
Abb. 2: Ablauf einer Kodierung durch den Base64-Encoder

Im Block „Quellinformationen” steht ein 3-Byte-Block mit den zu kodierenden Zeichen, gefolgt von den dezimalen ASCII-Codes und der zugehörigen binären Schreibweise. Darauf folgt unterhalb von „Base64” eine Aufteilung in 6-Bit-Blöcke, die sich daraus ergebenen dezimalen Indexwerte und die aus der Kodierungstabelle ermittelten ASCII-Zeichen. Der durch einen Base64-Decoder gegangene Rückweg funktioniert genau umgehehrt und sollte anhand des Beispiels leicht nachvollziehbar sein.

Für den Fall, dass der letzte aus drei Bytes bestehende Zeichenblock der zu kodierenden Zeichenkette weniger als drei Bytewerte enthält, werden abschließende Byteblöcke in Base64 durch das Gleichheitszeichen quasi als ”nicht vorhanden” markiert. Aus diesem Grunde enden derart kodierte Datenblöcke oft mit einem oder zwei Gleichheitszeichen. Dieser Sonderfall bewegt den Base64-Decoder dazu, die letzten in der Zeichenkette enthaltenen Bytes als leer zu interpretieren. Auf diese Weise werden letztlich ein oder zwei am Ende des Quellstrings stehende Zeichen als fehlend erkannt und tauchen dementsprechend nicht im dekodierten String auf.

Die Umwandlung eines Bildes oder einer beliebigen 8-Bit Binärdatei mittles Base64-Encoder führt zu einer Erhöhung der zu übertragenden Datenmenge um 33% – zuzüglich von maximal zwei möglichen Füllzeichen, wenn der letzte 3-Byte-Block nur ein einziges Zeichen enthält. Dies ist der Tatsache geschuldet, dass letztlich aus den drei Byte-Blöcken vier Bytes werden, da zu jedem 6-Bit-Index das zugehörige ASCII-Zeichen angegeben wird – aus 24 Bit werden letzten Endes 32 Bit.

Seite 1 von 2 | « [1] • [2] »
  
© 2009-2017 Möglichkeiten zur Steigerung von Geschwindigkeit und Usability Ihrer eigenen Website