Base32
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.