bigwilli
Goto Top

Base 64

Was ist Sinn und Aufgabe von Base 64??

Hallo Admins!

Da ich mich gerade mit Base 64 beschäftige, möchte ich gerne wissen, was Sinn und Aufgabe von Base 64 ist.
Kann mir jemand in groben Zügen in ein paar Sätzen eine Definition dieser Codierung geben?

Content-Key: 442

Url: https://administrator.de/contentid/442

Printed on: April 19, 2024 at 02:04 o'clock

Member: Frank
Frank Nov 19, 2002 at 16:13:24 (UTC)
Goto Top
base64 ist ein textbasiertes Format, welches der Übertragung von Binärdaten dient. Es ist in der RFC 2045 beschrieben und gehört zu den MIME-Richtlinien. Deshalb wird es manchmal auch als MIME-Codierung bezeichnet. Die Übertragung von binären Dateien mittels E-Mail zum Beispiel macht eine solche Konvertierung notwendig, da E-Mail ein textbasiertes Übertragungsformat ist. Durch die Verwendung verschiedener Zeichensätze auf den verschiedenen Servern, über welche diese Mail geleitet wird, könnten die angehängten Daten zerstört werden. Um das zu verhindern, gibt es base64. base64 benutzt einen sehr eingeschränkten Zeichensatz von 64 Zeichen, wie der Name schon vermuten lässt. Dieser Zeichensatz besteht aus folgenden Zeichen:

"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"

Dazu kommt ein "=" für das sogenannte Padding. Diese Auswahl ist so getroffen, weil diese Zeichen in nahezu jedem Zeichensatz der Computerwelt vorkommen. Die Auswahl der Zeichen macht base64 robuster als beispielsweise "uuencode"(welches einen anderen Zeichensatz verwendet).

Sehen wir uns den Zeichensatz näher an. Er enthält keine Steuerzeichen und beginnt mit "A". Das bedeutet der Charcode dieses Zeichens ist also 0. Die Anzahl von 64 Zeichen ermöglicht es dem Zeichensatz, 6 Bit pro Zeichen zu repräsentieren (der Logarithmus aus 64 zur Basis 2). Das bedeutet andersherum betrachtet, dass ein Zeichen eines base64-codierten Datensroms nur 6 Bit repräsentiert und nicht 8. Somit ist eine base64-codierte Datei immer rund 1/3 größer als das Original, denn der Speicherbedarf eines Zeichens ist nach wie vor 8 Bit, auch wenn es nur 6 Bit repräsentiert. Dafür hat man jedoch die Sicherheit, dass kein Bit verlorengeht. Und Sicherheit hat immer ihren Preis.

Kommen wir zur Umrechnung. base64 bearbeitet die Daten immer auf binärer Ebene. Ebenso ist es dem Verfahren egal, ob die Original-Datei mit 8, 10 oder 16 Bit großen Stücken arbeitet. Bei der Codierung wird der Bitstrom der Datei analysiert, immer nach 6 Bit abgeschnitten und in ein Zeichen des base64-Zeichensatzes umgewandelt.

Nun könnte man denken, der base64 Strom liest sich wie ein einziges langes Wort ohne Punkt und Komma. Dem ist auch (fast) so. Die RFC 2045: MIME (Multipurpose Internet Mail Extensions) Teil 1 (http://rfc.fh-koeln.de/rfc/html/rfc2045.html#23) schreibt vor, dass der Strom in maximal 76 Zeichen lange Einheiten (Zeilen) unterteilt werden muss. Da base64 ein auf binärer Ebene arbeitendes Format ist, müssen die im Originaltext enthaltenen Zeilentrenner in eine Form gebracht werden. Das Problem ist, dass die Zeilenumbruchformate von Windows, Unix und Macintosh basierten Systemen unterschiedlich sind. Es besteht sogar ein Unterschied auf gleichen Systemen. Der Internet Explorer zum Beispiel erzeugt in Textareas den windows-typischen "rn"-Umbruch. Browser basierend auf der Gecko-Engine (Netscape 6, Mozilla) erzeugen dagegen nur ein Unix-typisches "n". Schon alleine deshalb sollten alle Zeilenumbrüche auf ein einheitliches Maß gebracht werden.
Member: Bigwilli
Bigwilli Nov 20, 2002 at 06:48:31 (UTC)
Goto Top
Vielen Dank für diese perfekte, fachkundige Antwort! Es hat mir sehr geholfen und hat mich meinem Ziel bedeutend weitergebracht!

mfG

Martin Strecker