Anleitung
- Wählen Sie „Kodieren“, um Text in Base32hex umzuwandeln, oder „Dekodieren“, um Base32hex wieder in Text umzuwandeln.
- Lassen Sie bei „Variante“ Base32hex ausgewählt. Schalten Sie die „Auffüllung“ aus oder wechseln Sie zu „Kleinbuchstaben“, wenn Ihr Format das erfordert.
- Geben Sie die Eingabe ein, fügen Sie sie ein oder klicken Sie auf „Datei öffnen“. Das Ergebnis wird während der Eingabe aktualisiert.
- Kopieren Sie das Ergebnis oder laden Sie es als Datei herunter.
Was ist Base32hex?
Base32hex ist das in Abschnitt 7 von RFC 4648 definierte „Base 32 Encoding with Extended Hex Alphabet“. Es funktioniert genau wie das Standard-Base32: Jedes Zeichen trägt 5 Bit, aus je 5 Bytes werden 8 Zeichen, und die Ausgabe wird mit = auf ein Vielfaches von 8 aufgefüllt. Nur das Alphabet ist anders. Statt A-Z 2-7 zählt Base32hex dort weiter, wo das Hexadezimalsystem aufhört: Die Ziffern 0 bis 9 stehen für 0 bis 9, A ist 10 und V ist 31.
Da die beiden Alphabete die meisten Zeichen gemeinsam haben, verarbeitet ein Standard-Base32-Decoder einen Base32hex-String oft ohne Fehlermeldung, doch die dabei entstehenden Bytes sind falsch. Dekodieren Sie immer mit derselben Variante, mit der kodiert wurde.
Die Sortierreihenfolge bleibt erhalten
Das Alphabet ist in aufsteigender ASCII-Reihenfolge angeordnet, und der Wert jedes Zeichens wächst mit seiner Position. Vergleicht man also zwei Base32hex-Strings Zeichen für Zeichen, ergibt sich dieselbe Reihenfolge wie beim Vergleich der zugrunde liegenden Bytes. RFC 4648 hebt dies als die Eigenschaft hervor, die Standard-Base32 und Base64 fehlt. Dadurch eignet sich Base32hex gut für Schlüssel in sortierten Speichern wie Datenbanken und Key-Value-Stores.
Schreiben Sie alle Strings einheitlich in Groß- oder in Kleinbuchstaben, und schalten Sie die Auffüllung aus, wenn die Eingaben unterschiedlich lang sind: Das Zeichen = wird zwischen den Ziffern und den Buchstaben einsortiert und kann die Reihenfolge durcheinanderbringen.
Base32hex in NSEC3-Einträgen von DNSSEC
NSEC3-Einträge, definiert in RFC 5155, beweisen, dass ein DNS-Name nicht existiert, und erschweren es zugleich, alle Namen der Zone aufzulisten. Jeder Name wird mit SHA-1 gehasht, und der 20 Byte lange Hashwert wird als 32 Zeichen langes Base32hex-Label ohne Auffüllung geschrieben, meist in Kleinbuchstaben dargestellt. Weil die Kodierung die Reihenfolge der Hashwerte erhält, bilden die gehashten Namen eine sortierte Kette. Um einen Hashwert in ein solches Label umzuwandeln, fügen Sie ihn als Hex-Eingabe ein, schalten die „Auffüllung“ aus und wählen „Kleinbuchstaben“. Dieses Tool führt nur den Kodierungsschritt aus; den gesalzenen, iterierten NSEC3-Hashwert berechnet es nicht.
Base32hex im Programmcode
# Python 3.10+
import base64
base64.b32hexencode(b'foobar') # b'CPNMUOJ1E8======'
base64.b32hexdecode('CPNMUOJ1E8======') # b'foobar'
// Go (import "encoding/base32")
base32.HexEncoding.EncodeToString(data)
base32.HexEncoding.WithPadding(base32.NoPadding).EncodeToString(data)
Spezifikation
| Alphabet | 0-9 A-V |
|---|---|
| Ausgabegröße | 8 Zeichen pro 5 Bytes (160 %) |
| Auffüllung | Mit = auf ein Vielfaches von 8 Zeichen |
| Standard | RFC 4648, Abschnitt 7 |
| Groß-/Kleinschreibung relevant | Nein |
Beispiele
| Eingabe (UTF-8) | Ausgabe |
|---|---|
Hello, World! | 91IMOR3F5GG5ERRIDHI22=== |
Base64.is | 89GN6P9M6GN6ISO= |
你好 | SIUQ1PD5NK====== |
Häufig gestellte Fragen
Was ist der Unterschied zwischen Base32 und Base32hex?
A-Z 2-7, Base32hex dagegen 0-9 A-V, wodurch die Sortierreihenfolge der Daten erhalten bleibt. Die beiden sind nicht austauschbar.Unterscheidet Base32hex zwischen Groß- und Kleinschreibung?
Das Alphabet ist in Großbuchstaben definiert, dieser Decoder akzeptiert aber auch Eingaben in Kleinbuchstaben. Aktivieren Sie „Kleinbuchstaben“, wenn Sie eine Ausgabe in Kleinbuchstaben benötigen, zum Beispiel für DNS-Labels.
Sollte ich Auffüllung verwenden?
= auf ein Vielfaches von 8 Zeichen auf, viele Formate, darunter NSEC3, lassen die Auffüllung jedoch weg. Der Decoder akzeptiert beides, wählen Sie also, was das empfangende System erwartet.