www.wikidata.de-de.nina.az
Base64 ist ein Verfahren zur Kodierung von 8 Bit Binardaten z B ausfuhrbare Programme ZIP Dateien oder Bilder in eine Zeichenfolge die nur aus lesbaren Codepage unabhangigen ASCII Zeichen besteht Es findet im Internet Standard Multipurpose Internet Mail Extensions MIME Anwendung und wird dort zum Versenden von E Mail Anhangen verwendet Notig ist dies um den problemlosen Transport von beliebigen Binardaten zu gewahrleisten da SMTP in seiner ursprunglichen Fassung nur fur den Versand von 7 Bit ASCII Zeichen ausgelegt war Durch die Kodierung steigt der Platzbedarf des Datenstroms um 33 36 33 durch die Kodierung selbst bis zu weitere 3 durch die im kodierten Datenstrom eingefugten Zeilenumbruche Base64 wird zum Beispiel auch zur Kodierung von Benutzernamen und Passwort in der HTTP Basisauthentifizierung und zur Ubertragung von SSH Server Zertifikaten verwendet Inhaltsverzeichnis 1 Vorgehen bei der Kodierung 1 1 Padding 1 2 Platzbedarf 1 3 Base64 Zeichensatz 2 Beispiel 2 1 Radix 64 3 Siehe auch 4 Normen und Standards 5 Weblinks 6 EinzelnachweiseVorgehen bei der Kodierung BearbeitenZur Kodierung werden die Zeichen A Z a z 0 9 und verwendet sowie am Ende Da diese Zeichen auch im Extended Binary Coded Decimals Interchange Code EBCDIC vorkommen wenn auch an anderen Codepositionen ist ein verlustfreier Datenaustausch zwischen diesen Plattformen gesichert nbsp Zur Kodierung werden jeweils drei Byte des Bytestroms 24 Bit in vier 6 Bit Blocke aufgeteilt Jeder dieser 6 Bit Blocke bildet eine Zahl von 0 bis 63 Diese Zahlen werden anhand der nachfolgenden Umsetzungstabelle in druckbare ASCII Zeichen umgewandelt und ausgegeben Der Name des Algorithmus erklart sich durch ebendiesen Umstand jedem Zeichen des kodierten Datenstroms lasst sich eine Zahl von 0 bis 63 zuordnen siehe Tabelle Mathematisch betrachtet gleicht dies einem Stellenwertsystem der Basis 64 Padding Bearbeiten Falls die Gesamtanzahl der Eingabebytes nicht durch drei teilbar ist beinhaltet der letzte Eingabeblock weniger als 24 Bits In diesem Fall ist ein Padding der Eingabedaten erforderlich An den Eingabeblock werden Nullbits angehangt bis die Lange durch 6 teilbar ist Anschliessend wird die Ausgabe mit einem oder zwei Zeichen aufgefullt Wenn der Eingabeblock 8 Bit lang ist werden 4 Nullbits angehangt und zwei Zeichen ausgegeben Wenn der Eingabeblock 16 Bit lang ist werden 2 Nullbits angehangt und ein Zeichen ausgegeben 1 Beispiel Padding Eingabebytes Hex Anzahl Bits aufgefullt auf durch 6 teilbare Bitzahl Binardarstellung Senkrechtstrich trennt Padding Bits Base64 ohne Ausgabe Padding Base64 mit Ausgabe Padding 00 8 000000 00 span style color blue 0000 span AA AA span style color blue span 00 00 16 000000 000000 0000 span style color blue 00 span AAA AAA span style color blue span 00 00 00 24 000000 000000 000000 000000 AAAA AAAAFF 8 111111 11 span style color blue 0000 span w w span style color blue span FF FF 16 111111 111111 1111 span style color blue 00 span 8 8 span style color blue span FF FF FF 24 111111 111111 111111 111111 Da sich die Anzahl der ursprunglichen Bytes immer eindeutig aus der Anzahl der Base64 Eingabe Zeichen ermitteln lasst wird in manchen Kontexten und Protokollen kein Padding verwendet abweichend von der ursprunglichen Base64 Definition Platzbedarf Bearbeiten Bei einer zu kodierenden Eingabe mit n displaystyle n nbsp Byte betragt der Platzbedarf fur den Base64 kodierten Inhalt ohne Zeilenumbruche z 4 n 3 displaystyle z 4 cdot lceil tfrac n 3 rceil nbsp Zeichen Die Klammern um den Bruch stehen fur die aufrundende Ganzzahldivision In der Darstellung von sehr langen Base64 Strings werden diese oftmals zum Beispiel nach jeweils 64 Zeichen umgebrochen also ein Zeilenumbruch eingefugt Solche Zeilenumbruche sind fur die Dekodierung nicht von Belang und werden ignoriert Base64 Zeichensatz Bearbeiten Wert Zeichen Wert Zeichen Wert Zeichen Wert Zeichendez binar hex dez binar hex dez binar hex dez binar hex 0 small 000000 small 00 A 16 small 010000 small 10 Q 32 small 100000 small 20 g 48 small 110000 small 30 w1 small 000001 small 01 B 17 small 010001 small 11 R 33 small 100001 small 21 h 49 small 110001 small 31 x2 small 000010 small 02 C 18 small 010010 small 12 S 34 small 100010 small 22 i 50 small 110010 small 32 y3 small 000011 small 03 D 19 small 010011 small 13 T 35 small 100011 small 23 j 51 small 110011 small 33 z4 small 000100 small 04 E 20 small 010100 small 14 U 36 small 100100 small 24 k 52 small 110100 small 34 05 small 000101 small 05 F 21 small 010101 small 15 V 37 small 100101 small 25 l 53 small 110101 small 35 16 small 000110 small 06 G 22 small 010110 small 16 W 38 small 100110 small 26 m 54 small 110110 small 36 27 small 000111 small 07 H 23 small 010111 small 17 X 39 small 100111 small 27 n 55 small 110111 small 37 38 small 001000 small 08 I 24 small 011000 small 18 Y 40 small 101000 small 28 o 56 small 111000 small 38 49 small 001001 small 09 J 25 small 011001 small 19 Z 41 small 101001 small 29 p 57 small 111001 small 39 510 small 001010 small 0A K 26 small 011010 small 1A a 42 small 101010 small 2A q 58 small 111010 small 3A 611 small 001011 small 0B L 27 small 011011 small 1B b 43 small 101011 small 2B r 59 small 111011 small 3B 712 small 001100 small 0C M 28 small 011100 small 1C c 44 small 101100 small 2C s 60 small 111100 small 3C 813 small 001101 small 0D N 29 small 011101 small 1D d 45 small 101101 small 2D t 61 small 111101 small 3D 914 small 001110 small 0E O 30 small 011110 small 1E e 46 small 101110 small 2E u 62 small 111110 small 3E 15 small 001111 small 0F P 31 small 011111 small 1F f 47 small 101111 small 2F v 63 small 111111 small 3F In Dateinamen und URLs konnen die Zeichen und nicht verwendet werden da sie dort fur besondere Funktionen reserviert sind In einem solchen Fall wird mit base64url eine inkompatible Abwandlung beschrieben Die Zeichen und werden dann durch Minus ASCII 2Dhex und Unterstrich ASCII 5Fhex ersetzt Das Fullzeichen am Ende wird prozentkodiert zu 3d kann aber entfallen wenn die Lange des Strings bekannt ist 2 Beispiel BearbeitenPolyfon zwitschernd assen Maxchens Vogel Ruben Joghurt und Quark Dieser 64 Zeichen lange Text ware in UTF 8 Kodierung 68 Byte lang da in UTF 8 das Eszett und die Umlaute jeweils eine Lange von zwei Bytes haben Mit der Umwandlung zu Base64 wird daraus eine 92 Zeichen lange Base64 Zeichenkette UG9seWZvbiB6d2l0c2NoZXJuZCBhw59lbiBNw6R4Y2hlbnMgVsO2Z2VsIFLDvGJl biwgSm9naHVydCB1bmQgUXVhcms Erkennbar ist hierbei dass Base64 eine fur Menschen nicht lesbare Kodierung erstellt Dieser Umstand ist jedoch nicht als wirksame Verschlusselung anzusehen da der Datenstrom der Eingabe sehr leicht aus der Zeichenfolge am Ausgang zuruckgewonnen werden kann sobald diese als Base64 kodiert erkannt ist Umwandlung der Zeichen Pol in Base64 Phase Daten AnmerkungenUrsprungstext PolUnicode Zeichen U 0050 U 006F U 006C gemass Unicodeblock Basis LateinischBytes 0x50 0x6F 0x6C gemass UTF 8Binarschreibweise 0101 0000 0110 1111 0110 1100 siehe HexadezimalsystemGruppierung in 6er Blocken 010100 000110 111101 101100 jeder 6er Block entspricht einem Base64 ZeichenCodierung als Base64 Zeichen U G 9 s gemass der Tabelle oben von binar nach Zeichen Ohne Leerzeichen UG9sRadix 64 Bearbeiten Das OpenPGP Datenformat definiert eine Variante von Base64 die ASCII Armor genannt wird Diese besteht aus genormten Kopf und Fusszeilen welche zum einen den Anfang und das Ende der Daten anzeigen zum anderen einen Hinweis fur den menschlichen Leser geben welche Art von Daten kodiert sind und mit welchem Programm die Daten erzeugt worden sind An die Base64 kodierten Daten wird eine Prufsumme CRC 24 angehangt dieses leicht modifizierte Verfahren tragt den Namen Radix 64 BEGIN PGP MESSAGE Version GnuPG v1 4 10 GNU Linux jA0EAwMCxamDRMfOGV5gyZPnyX1BBPOQAE4BHbh7PfTDInn 94hXmnBr9D8 4x5R kNNl4E499Me3Fotq8 zvznEycz2h7vJ21SdP5akLhRPd4W1S79LoCvbZYh2x4t6x Cnqev6S97ys4chOPgz0FePfKQos0I7 rrMSAc9 vXHmUCthFqp7FJJ7 D9bCfmdF 1qkYNhtk P5uvZ0N2zAUsiScDJA XXuR END PGP MESSAGE Der Base64 Teil in diesem Beispiel beginnt mit jA0E und endet mit DJA Anschliessend folgt ein Zeilenumbruch ein Gleichheitszeichen und die base64 kodierte CRC 24 Prufsumme uber die Original Nachricht also vor der Base64 Kodierung Siehe auch BearbeitenQuoted Printable Kodierung UUencode Base32 Base85Normen und Standards BearbeitenJ Linn RFC 1421 Privacy Enhancement for Internet Electronic Mail Part I Message Encryption and Authentication Procedures Februar 1993 lost RFC 1113 ab historisch englisch N Borenstein N Freed RFC 1521 MIME Multipurpose Internet Mail Extensions Part One Mechanisms for Specifying and Describing the Format of Internet Message Bodies September 1993 Standard draft lost RFC 1341 ab aktualisiert durch RFC 1590 veraltet englisch S Josefsson RFC 3548 The Base16 Base32 and Base64 Data Encodings Errata RFC 3548 Juli 2003 aktualisiert durch RFC 4648 veraltet abgelost durch RFC 4648 englisch S Josefsson RFC 4648 The Base16 Base32 and Base64 Data Encodings Errata RFC 4648 Oktober 2006 Standard proposed lost RFC 3548 ab englisch J Callas L Donnerhacke H Finney D Shaw R Thayer RFC 4880 OpenPGP Message Format Errata RFC 4880 November 2007 Standard proposed aktualisiert durch RFC 5581 lost RFC 1991 und RFC 2440 ab englisch Weblinks BearbeitenBase64 Codierung Decodierung online base64decode orgEinzelnachweise Bearbeiten RFC 4648 The Base16 Base32 and Base64 Data Encodings Oktober 2006 Abschnitt 4 englisch S Josefsson RFC 4648 The Base16 Base32 and Base64 Data Encodings Errata RFC 4648 Oktober 2006 Standard proposed lost RFC 3548 ab englisch Abgerufen von https de wikipedia org w index php title Base64 amp oldid 235831590