Crockford-Base32-Encoder und -Decoder

Wandeln Sie Text, Hex-Bytes oder Dateien in das Base32 von Douglas Crockford um und zurück. Der Decoder verzeiht Tippfehler: Er ignoriert Groß- und Kleinschreibung sowie Bindestriche und liest O als 0 und I oder L als 1.

Läuft vollständig in Ihrem Browser. Es wird nichts hochgeladen.

Anleitung

  1. Wählen Sie „Kodieren“, um Text in Crockford Base32 umzuwandeln, oder „Dekodieren“, um es wieder in Text umzuwandeln.
  2. Lassen Sie bei „Variante“ Crockford ausgewählt und achten Sie darauf, dass die „Auffüllung“ ausgeschaltet ist. Aktivieren Sie „Kleinbuchstaben“ für eine Ausgabe in Kleinbuchstaben.
  3. Geben Sie die Eingabe ein, fügen Sie sie ein oder klicken Sie auf „Datei öffnen“. Beim Dekodieren werden Bindestriche und Leerzeichen ignoriert.
  4. Kopieren Sie das Ergebnis oder laden Sie es als Datei herunter.

Was ist Crockford Base32?

Douglas Crockford entwarf dieses Base32-Alphabet für Kennungen, die Menschen lesen, eintippen und laut aussprechen. Es verwendet die zehn Ziffern und 22 Großbuchstaben: 0123456789ABCDEFGHJKMNPQRSTVWXYZ. Die Buchstaben I und L fehlen, weil sie der Ziffer 1 ähneln, O, weil es wie die 0 aussieht, und U, um die Gefahr zu verringern, versehentlich obszöne Wörter zu bilden.

Jedes Symbol trägt 5 Bit, sodass aus 5 Bytes 8 Zeichen werden, genau wie bei Base32 nach RFC 4648. Die Symbole stehen in aufsteigender ASCII-Reihenfolge, daher werden Strings ohne Auffüllung in einheitlicher Schreibweise in derselben Reihenfolge sortiert wie die Daten, die sie kodieren. Crockfords Spezifikation sieht keine Auffüllung vor, lassen Sie die Option „Auffüllung“ also ausgeschaltet.

Tolerante Dekodierung

Crockfords Spezifikation verlangt von Decodern, das zu akzeptieren, was Menschen tatsächlich eintippen, und genau das tut dieses Tool:

  • Groß- und Kleinbuchstaben werden gleich behandelt.
  • Der Buchstabe O wird als Ziffer 0 gelesen, die Buchstaben I und L als 1.
  • Bindestriche, die zur besseren Lesbarkeit langer Codes eingefügt sein können, werden ignoriert, ebenso Leerzeichen und Zeilenumbrüche.

Der Buchstabe U ist ungültig und wird mit seiner Position gemeldet.

Bytes, Zahlen und ULID

Crockford beschreibt seine Kodierung anhand von Zahlen, während dieses Tool eine Folge von Bytes in 5-Bit-Gruppen kodiert, nach dem Verfahren von RFC 4648, aber mit Crockfords Symbolen. Ist die Anzahl der Bits kein Vielfaches von 5, setzen zahlenbasierte Implementierungen die überzähligen Nullbits an den Anfang, dieses Tool dagegen ans Ende, sodass die Ergebnisse voneinander abweichen können.

ULID ist ein typisches Beispiel: Das Format verwendet das Crockford-Alphabet, kodiert seinen 128-Bit-Wert aber als Zahl in 26 Zeichen. Die 16 Bytes einer ULID ergeben hier daher nicht denselben String, und das Dekodieren einer ULID liefert um zwei Bit verschobene Bytes. Das optionale Prüfsymbol aus Crockfords Spezifikation, ein zusätzliches Zeichen für den Wert modulo 37, wird nicht unterstützt: Dieses Tool fügt es weder hinzu noch prüft es es.

Spezifikation

Alphabet0-9 A-Z ohne I L O U
Ausgabegröße8 Zeichen pro 5 Bytes (160 %)
AuffüllungKeine
StandardCrockford Base32 (2002)
Groß-/Kleinschreibung relevantNein

Beispiele

Eingabe (UTF-8)Ausgabe
Hello, World!91JPRV3F5GG5EVVJDHJ22
Base64.is89GQ6S9P6GQ6JWR
你好WJYT1SD5QM

Häufig gestellte Fragen

Unterscheidet Crockford Base32 zwischen Groß- und Kleinschreibung?

Nein. Die Ausgabe erfolgt standardmäßig in Großbuchstaben, mit der Option „Kleinbuchstaben“ wechseln Sie zu Kleinbuchstaben. Der Decoder akzeptiert beides, sogar gemischt in einem String.

Warum fehlen I, L, O und U im Alphabet?

I und L werden leicht mit 1 verwechselt und O mit 0. Deshalb sind sie ausgelassen und werden beim Dekodieren als diese Ziffern gelesen. U ist ausgeschlossen, damit zufällige Codes seltener anstößige englische Wörter bilden.

Unterstützt dieses Tool das Crockford-Prüfsymbol?
Nein. Die Spezifikation erlaubt ein optionales zusätzliches Zeichen mit einer Prüfsumme modulo 37, das die zusätzlichen Symbole * ~ $ = U verwendet. Dieses Tool fügt es weder hinzu noch prüft es es. Entfernen Sie ein Prüfsymbol daher vor dem Dekodieren.
Kann ich hier eine ULID dekodieren?

Nicht in ihre exakten 16 Bytes. Eine ULID kodiert ihre 128 Bit als eine einzige Zahl mit den überzähligen Bits am Anfang, während dieses Tool mit Bytegruppen arbeitet und sie ans Ende setzt. Verwenden Sie eine ULID-Bibliothek, um den Zeitstempel und den Zufallsanteil auszulesen.