Encoder und Decoder mit eigenem Alphabet

Geben Sie Ihr eigenes Alphabet ein oder beginnen Sie mit einer Vorlage, und kodieren oder dekodieren Sie damit. Wählen Sie „Große Zahl“ für jede beliebige Alphabetlänge oder „Bitgruppen“ für eine Ausgabe im Stil von RFC 4648.

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

Anleitung

  1. Geben Sie Ihr Alphabet ein oder wählen Sie unter „Vorlage“ eines aus und passen Sie es an. Jedes Zeichen darf nur einmal vorkommen.
  2. Wählen Sie unter „Methode“ das Verfahren: „Große Zahl (wie Base58)“ für jede Alphabetlänge oder „Bitgruppen (wie RFC 4648)“ für Alphabete mit 2, 4, 8, 16, 32 oder 64 Zeichen.
  3. Geben Sie bei Bitgruppen optional unter „Füllzeichen“ ein Zeichen ein, das nicht zum Alphabet gehört.
  4. Wählen Sie „Kodieren“, um Ihren Text zu kodieren, oder „Dekodieren“, um einen in Ihrem Alphabet geschriebenen String einzufügen und zu dekodieren.

Zwei Wege, Bytes auf Zeichen abzubilden

Große Zahl funktioniert wie Base58. Die gesamte Eingabe wird als eine einzige große Ganzzahl gelesen und immer wieder durch die Länge des Alphabets geteilt; jeder Rest wählt ein Zeichen aus. Das funktioniert mit jedem Alphabet aus mindestens 2 Zeichen, etwa mit 10, 36, 58 oder 62 Zeichen. Führende Nullbytes werden als erstes Zeichen des Alphabets geschrieben und überstehen so eine Hin- und Rückumwandlung. Es gibt keine Auffüllung, und die Eingabe ist auf etwa 20 KB begrenzt, weil die Berechnung bei langen Daten langsam wird.

Bitgruppen funktionieren wie RFC 4648. Die Eingabe wird in Stücke mit einer festen Anzahl von Bits zerlegt: 1 Bit bei einem Alphabet aus 2 Zeichen, 4 Bit bei 16, 5 Bit bei 32 und 6 Bit bei 64. Jedes Stück ist ein Index in das Alphabet. Genau so funktionieren Hex, Base32 und Base64, und die Ausgabelänge hängt nur von der Eingabelänge ab.

Warum die beiden Methoden unterschiedliche Ergebnisse liefern

Die eine Methode kodiert den Zahlenwert der Daten, die andere ihre Bits Position für Position. Die Ergebnisse unterscheiden sich in der Regel, und ein String muss mit der Methode dekodiert werden, mit der er erzeugt wurde.

AlphabetEingabeBitgruppenGroße Zahl
Standard-Base64HiSGk=Ehp
Base32 nach RFC 4648HiJBUQ====SDJ
01A010000011000001
0123456789Hinicht verfügbar18537

Mit Bitgruppen und = als Füllzeichen reproduzieren die Standardalphabete normales Base64 und Base32. Die Methode „Große Zahl“ lässt das führende Null-Bit von A weg, weil sie einen Wert schreibt und keine feste Anzahl von Bits. Mit den zehn Ziffern als Alphabet zeigt sie die Bytes von Hi einfach als Dezimalzahl.

Das Füllzeichen gilt nur für Bitgruppen. Die Ausgabe wird bei Alphabeten mit 64 Zeichen auf ein Vielfaches von 4 Zeichen aufgefüllt, bei Alphabeten mit 32 und 8 Zeichen auf ein Vielfaches von 8. Bei 2, 4 oder 16 Zeichen füllt jedes Byte ganze Zeichen, daher ist nie eine Auffüllung nötig.

Regeln für ein gültiges Alphabet

  • Mindestens zwei Zeichen.
  • Keine Duplikate. Der Decoder ordnet jedes Zeichen genau einem Wert zu. Stünde a sowohl für 0 als auch für 10, ließe sich ein String, der es enthält, nicht dekodieren.
  • Groß- und Kleinschreibung zählt. a und A sind unterschiedliche Zeichen.
  • Das Füllzeichen darf nicht im Alphabet vorkommen, sonst ließe es sich nicht von den Daten unterscheiden.

Alles läuft in Ihrem Browser, sodass Ihr Alphabet und Ihre Daten auf Ihrem Gerät bleiben.

Wann ein eigenes Alphabet hilft

  • Verschleierte IDs. Ein gemischtes Alphabet verwandelt Kennungen in Tokens ohne erkennbares Muster. Das verbirgt, schützt aber nicht: Wer das Alphabet kennt, kann sie dekodieren.
  • Proprietäre oder ältere Formate. Übernehmen Sie das Alphabet eines Systems aus dessen Dokumentation und dekodieren Sie seine Daten direkt.
  • Lernen. Vergleichen Sie Alphabetlängen und beide Methoden, um zu verstehen, wie die Umrechnung zwischen Basen funktioniert. Für feste Alphabete siehe Base58 und Base62.

Häufig gestellte Fragen

Was ist der Unterschied zwischen „Große Zahl“ und „Bitgruppen“?

„Große Zahl“ wandelt die gesamte Eingabe als eine Ganzzahl in die neue Basis um, wie Base58, und funktioniert mit jeder Alphabetlänge. „Bitgruppen“ teilen die Eingabe in gleich große Bitstücke auf, wie Base64, und benötigen ein Alphabet mit 2, 4, 8, 16, 32 oder 64 Zeichen.

Warum stimmt mein eigenes Base64-Alphabet nicht mit der Standard-Base64-Ausgabe überein?

Standard-Base64 verwendet Bitgruppen. Wählen Sie die Methode „Bitgruppen (wie RFC 4648)“ und legen Sie = als Füllzeichen fest, um es nachzubilden. Die Methode „Große Zahl (wie Base58)“ erzeugt aus demselben Alphabet einen völlig anderen String.

Warum sind doppelte Zeichen nicht erlaubt?

Jedes Zeichen muss zu genau einem Wert dekodiert werden. Ein wiederholtes Zeichen hätte zwei Bedeutungen, und die ursprünglichen Daten ließen sich nicht zuverlässig wiederherstellen.

Kann ich bei der Methode „Große Zahl“ ein Füllzeichen verwenden?

Nein. Die Ausgabe der Methode „Große Zahl“ hat keine feste Blockgröße, also gibt es nichts aufzufüllen. Die Option „Füllzeichen“ gilt nur für Bitgruppen.

Ist ein eigenes Alphabet eine Form der Verschlüsselung?

Nein. Es bleibt eine Kodierung ohne Schlüssel. Ein gemischtes Alphabet kann Daten auf den ersten Blick schwerer erkennbar machen, sollte aber niemals zum Schutz von Geheimnissen verwendet werden.