Base32

aus Wikipedia, der freien Enzyklopädie
Wechseln zu: Navigation, Suche

Base32 beschreibt ein Verfahren zur Kodierung von Binärdaten in eine Zeichenfolge, die nur aus 32 verschiedenen ASCII-Zeichen besteht (plus einem zusätzlichen 33. Zeichen als Füllzeichen am Datenende). Angewendet wird es in Umgebungen, wo nicht zwischen Groß- und Kleinbuchstaben unterschieden wird, so unter Anderem bei Umlaut-Domainnamen.

Es gibt verschiedene Kodierungsmöglichkeiten. Bei Umlaut-Domainnamen wird der sogenannte Punycode verwendet, der die Sonderzeichen und ihre Position kodiert. RFC 3548 beschreibt eine andere, allgemein gültige Kodierung für beliebige Binärdaten, welche wie folgt abläuft:

Fünf 8-Bit-Bytes (also zusammen 40 Bit) werden in acht 5-Bit-Gruppen zerlegt. Jede dieser Gruppen entspricht einer Zahl zwischen 0 und 31. Diese Zahlen werden anhand der nachfolgenden Umsetzungstabelle in „druckbare ASCII-Zeichen“ umgewandelt und ausgegeben. Wenn am Ende kein kompletter 40-Bit-Block mehr gebildet werden kann, wird dieser Block mit Nullbytes aufgefüllt und die 5-Bit-Gruppen, die nur aus Füllbits bestehen, mit = kodiert, um dem Dekodierer mitzuteilen, wie viele Füllbits hinzugefügt wurden.

Base32 nach RFC 3548 / RFC 4648
Wert Zeichen Wert Zeichen Wert Zeichen Wert Zeichen
0 A 8 I 16 Q 24 Y
1 B 9 J 17 R 25 Z
2 C 10 K 18 S 26 2
3 D 11 L 19 T 27 3
4 E 12 M 20 U 28 4
5 F 13 N 21 V 29 5
6 G 14 O 22 W 30 6
7 H 15 P 23 X 31 7

Beispielcodierung für den Wert 0

Schritt Block1 Block2 Block3 Block4 Block5 Block6 Block7 Block8
Integer Wert 0 - - - - - - -
Repräsentiert als 8 Bits 00000000 - - - - - - -
Aufgeteilt in 8x5 Blöcke 00000 00... - - - - - -
Fehlende Nullen aufgefüllt 00000 00000 - - - - - -
Integer Wert 0 0 - - - - - -
Ergibt die Codierung A A = = = = = =


Beispielcodierung für den String "AB" (entspricht in Ascii Codierung den Werten 65 u.66)

Schritt Block1 Block2 Block3 Block4 Block5 Block6 Block7 Block8
Integer Werte 65 66 - - - - - -
Repräsentiert als 8 Bits 01000001 01000010 - - - - - -
Aufgeteilt in 8x5 Blöcke 01000 00101 00001 0.... - - - -
Fehlende Nullen aufgefüllt 01000 00101 00001 00000 - - - -
Integer Werte 8 5 1 0 - - - -
Ergibt die Codierung I F B A = = = =


Die Ziffern 0 und 1 werden nicht verwendet, da bei schriftlicher Wiedergabe eine Verwechslungsgefahr mit den Buchstaben O und I besteht.

[Bearbeiten] Base32hex

RFC 3548 wurde von RFC 4648 abgelöst, das eine weitere Kodierung einführt. Diese benutzt – ähnlich wie das Hexadezimalsystem – für die Werte 0 bis 9 die dezimalen Ziffern. Die Werte 10 bis 31 werden durch die Buchstaben A bis V repräsentiert. Damit bleibt, wie bei Hexadezimalzahlen, die Reihenfolge der kodierten Werte bei lexikographischer Sortierung erhalten.

Base32hex nach RFC 4648
Wert Zeichen Wert Zeichen Wert Zeichen Wert Zeichen
0 0 8 8 16 G 24 O
1 1 9 9 17 H 25 P
2 2 10 A 18 I 26 Q
3 3 11 B 19 J 27 R
4 4 12 C 20 K 28 S
5 5 13 D 21 L 29 T
6 6 14 E 22 M 30 U
7 7 15 F 23 N 31 V

Diese Kodierung wird unter anderem im DNSSEC verwendet.

[Bearbeiten] Siehe auch

[Bearbeiten] Weblinks

Meine Werkzeuge
Namensräume
Varianten
Aktionen
Navigation
Mitmachen
Drucken/exportieren
Werkzeuge
In anderen Sprachen