Die in RFC’s[1, 2] beschriebene Base64-Kodierung dient zum Übertragen jeglicher 8-Bitgruppen über nicht 8-bitsichere Wege. Hierfür werden jeweils drei Bytes zu einer 24-Bitfolge zusammengefasst und diese dann in vier 6-Bitgruppen unterteilt. Die 6-Bitgruppen werden an Hand einer Zeichentabelle (Base64-Alphabet) zurückübersetzt und übermittelt. Dadurch wird jeder Text um 33% länger.
Das Base64-Alphabet ist eine Untermenge von 65-Zeichen aus dem ASCII-Zeichensatz. Davon dienen 64 Zeichen der Textkodierung und ein Zeichen (=) als Endmarkierung bei einer unvollstzändigen 24-Bitgruppe.
Obwohl die Kodierung nach Base64 eine Verbesserung gegenüber dem im Kodieralgorithmus verwandten Uuencode aufweist, bleiben vier Nachteile bestehen, die das Einsatzgebiet einschränken:
Daher eignet sich Base64 nicht für die Kodierung von sehr großen Binärdateien vor deren Übertragung — wie bspw. Audio-, Film- oder Programmdateien mit üblichen Dateigrößen von etlichen MBytes. Dies gilt Insbesondere für das Usenet[3], denn hier müssen Dateien mit mehr als 100, 250 oder 500 kByte in mehrere Teile aufgeteilt werden. Um die genannten Nachteile zu beheben wurde die yEnc-Kodierung als Nachfolger vorgeschlagen.
|
|
|
|
=angehangen.
=.
=.
Quelle | Binärdarsetllung | Base64 | |
---|---|---|---|
a | 01100001 | ||
b | 01100010 | ||
c | 01100011 | ||
24-Bit | 011000010110001001100011 | ||
6-Bit | 011000 | 24 | Y |
010110 | 22 | W | |
001001 | 9 | J | |
100011 | 35 | j | |
d | 01100100 | ||
e | 01100101 | ||
________ | |||
24-Bit | 011001000110010100______ | ||
6-Bit | 011001 | 25 | Z |
000110 | 6 | G | |
010100 | 20 | U | |
______ | = | ||
YWJjZGU= |
Theoretisch sollte ein Dekoder an dieser Stelle in der Lage sein, den Ausgangstext wieder zu rekonstruieren. In der Praxis erwarten die meisten Dekoder für eine automatische Ausführung aber noch mindestens zwei Zeilen vor dem kodierten Text. Die erste Zeile gibt den Dateinamen für den zurückkonvertiereten Text an. Die zweite definiert den Kodierungsalgorithmus.
Content-Type: application/octet-stream; name="Ausgabe.txt" Content-Transfer-Encoding: base64 YWJjZGU=
In einem zu dekodierenden Text dürfen nur solche Zeichen vorkommen, wie sie im Base64-Alphabet (s. Tab.) festgelegt sind. Alle anderen Zeichen, Umbrüche eingeschlossen, sind vorher zu entfernen und weisen im Allgemeinen auf einen Übertragungfehler hin.
Da ein =
nur am Ende eines Base64-Textes auftauchen kann, kann dies als Textende interpretiert werden. Zu beachten ist aber daß ein Base64-Text aber nicht mit einem =
abschließen muß.
Das Base64-Alphabet stellt sich in allen Versionen der ISO 646 und im EBCDIC identisch dar. Im Gegensatz dazu erfüllen andere Kodierungsalgorithmen wie Uuencode, BinHex [4] und Base85 (Level2 PostScript) nicht diese Eigenschaft und eignen sich daher nicht zum Mailtransport zwischen unterschiedlichen Systemen.
#:~>base64 <<< 'Maria Juana kommt nachts!' TWFyaWEgSnVhbmEga29tbXQgbmFjaHRzIQo= #:~>
#:~>uuencode --base64 <<< 'Maria Juana kommt nachts!' Ausgabe.b64 begin-base64 644 Ausgabe.b64 TWFyaWEgSnVhbmEga29tbXQgbmFjaHRzIQo= ==== #:~>
#!/usr/bin/env python3.2 # -*- coding: utf-8 -*- # import codecs def Base64 (Text): return codecs.encode(bytes(Text,'utf8'),'base64_codec').decode('utf8')
Diese Seite wurde vom Besucher am 10.12.2024
um 13:31:42
Uhr von einem Rechner mit der TCP/IP-Adresse 18.97.14.85
mit der Browserkennung CCBot/2.0 (https://commoncrawl.org/faq/)
aus der Domäne (none)
kommend aufgerufen. Als zuletzt besuchte Webseite wurde (none)
übermittelt.
Stand vom 21.04.2011 | GnuPG (PGP) ID: 0xA4A5103F Fingerabdruck: 0E01 902F 3EC7 B119 9492 D196 BEB5 4D5D A4A5 103F | Datenschutzhinweis | © seit 2001, Prüfziffernberechnung.DE |