Decodex

DECODEX · BASE64 · UTF-8

Base64-Padding: Was = und == bedeuten

Base64-Padding mit f, fo und foo verstehen. Fehlende Füllzeichen, ungültige Längen und teilweise gefüllte Zeichenfolgen prüfen.

Ein abschließendes = ist Padding und kein Zeichen des ursprünglichen Texts. Base64 stellt drei Bytes mit vier Zeichen dar. Eine letzte Gruppe aus einem Byte benötigt ==, eine aus zwei Bytes benötigt = im gepolsterten Format.

Bytes statt Buchstaben zählen

Jedes Datenzeichen steht für sechs Bits. Drei Bytes ergeben 24 Bits und vier Zeichen. Umlaute und Emojis können mehrere UTF-8-Bytes belegen: 😀 belegt vier Bytes und ergibt 8J+YgA==. Die Tabelle vergleicht Eingaben aus einem, zwei und drei Bytes.

Fehlendes Padding wiederherstellen

Wenn ungepolsterte Eingaben erlaubt sind, entferne Leerzeichen und prüfe die Länge modulo 4. Rest 2: == ergänzen; Rest 3: = ergänzen; Rest 0: nichts ergänzen. Rest 1 bedeutet ungültige oder abgeschnittene Daten und lässt sich mit = nicht reparieren. Prüfe das von der API erwartete Format.

Warum Zg funktioniert und Zg= scheitert

Decodex ergänzt das vollständig fehlende Padding von Zg und liefert f. Zg== ist ebenfalls gültig. Zg= ist nur teilweise gepolstert und hat eine falsche Gesamtlänge, deshalb wird es abgelehnt. Auch A=AA und Zg=== scheitern. Wiederholtes Hinzufügen oder Entfernen von = kann einen Kopierfehler verdecken.

Beispiel ausprobieren

TextUTF-8 bytesBase64Padding
f1Zg====
fo2Zm8==
foo3Zm9v—

Beispiel ausprobieren →

Base64 → UTF-8 · UTF-8 → Base64

Häufige Fragen

Endet jede Base64-Zeichenfolge mit =?

Nein. Ist die Bytezahl durch drei teilbar, ist kein Padding nötig. Manche Protokolle lassen es ausdrücklich weg.

Quellen

Weitere Base64-Anleitungen