Was Base64url verändert
Base64url ist die in RFC 4648 definierte URL- und dateinamensichere Base64-Variante. Die Bitgruppierung bleibt gleich, doch + wird durch - und / durch _ ersetzt.
Das =-Padding bleibt definiert, wird aber in vielen Protokollen ausgelassen, weil sich die fehlende Länge ableiten lässt. Diese Seite kann beide Formen ausgeben und bei gültiger Länge dekodieren.
Unicode-Text wird als UTF-8 verarbeitet. Base64url macht Daten weder geheim noch URL-percent-kodiert.
So verwendest du Base64url
- Wähle Kodieren für Text oder Dekodieren für eine Base64url-Zeichenfolge.
- Aktiviere Padding, wenn das Ziel ein Vielfaches von vier erwartet; deaktiviere es für kompakte Tokenprofile.
- Füge den Wert ohne Leerraum, + oder / ein.
- Vergleiche die Ausgabe mit Standard-Base64, wenn die Bytes Alphabetindizes 62 oder 63 erzeugen.
- Wechsle die Richtung, um den UTF-8-Roundtrip zu prüfen.
Base64url-Beispiele mit und ohne Padding
Die Beispiele zeigen UTF-8, optionales Padding und den Unterschied zum normalen Base64-Alphabet.
| Eingabe | Ausgabe | Konvertierungsrichtung | Hinweise |
|---|---|---|---|
Hello |
SGVsbG8= |
Kodieren | Padding hinzufügen: Mit Padding — Hello mit Padding. Dieser Text verwendet zufällig keines der beiden Alphabetzeichen, die sich von gewöhnlichem Base64 unterscheiden. |
Hello |
SGVsbG8 |
Kodieren | Padding hinzufügen: Ohne Padding — Hello ohne Padding. RFC 4648 erlaubt einer verweisenden Spezifikation, das Padding wegzulassen, wenn die Datenlänge bekannt ist. |
SGVsbG8 |
Hello |
Dekodieren | Beide Padding-Varianten dekodieren. Der Decoder ergänzt das erforderliche interne Padding, bevor er die Bytes rekonstruiert. |
࠾ |
4KC- |
Kodieren | Padding hinzufügen: Mit Padding — URL-sicheres Alphabetzeichen. Dieses gültige UTF-8-Zeichen erzeugt in Base64url ein abschließendes -, wo gewöhnliches Base64 ein + verwendet. |
你好 |
5L2g5aW9 |
Kodieren | Padding hinzufügen: Ohne Padding — Unicode UTF-8. Unicode-Text wird vor der Base64url-Kodierung in UTF-8-Bytes umgewandelt. |
{"ok":true} |
eyJvayI6dHJ1ZX0 |
Kodieren | Padding hinzufügen: Ohne Padding — Kompakter JSON-Text. Das Kodieren von JSON signiert, validiert oder verschlüsselt es nicht; es stellt nur seine UTF-8-Bytes dar. |
Alphabet und Padding
Der Decoder akzeptiert Buchstaben, Ziffern, - und _ sowie bis zu zwei = nur am Ende. Leerraum und + / werden abgelehnt, damit die Variante eindeutig bleibt.
Eine Datenlänge modulo vier von eins ist unmöglich. Vorhandenes Padding muss exakt der benötigten Anzahl entsprechen.
- Verwende - statt +.
- Verwende _ statt /.
- Padding darf nur am Ende stehen.
- Längenrest 1 ist ungültig.
- Nichtkanonische Endbits werden abgelehnt.
Wie Base64url arbeitet
Drei Bytes bilden 24 Bits und werden in vier Sechsergruppen geteilt. Diese Indizes werden mit dem Base64url-Alphabet dargestellt.
Ein oder zwei Schlussbytes ergeben zwei oder drei Datensymbole. Optionales Padding füllt vier Positionen auf, enthält aber keine Nutzdaten.
Beim Dekodieren wird fehlendes Padding intern ergänzt, - und _ werden in das Standardalphabet zurückgeführt und Form sowie UTF-8 streng geprüft.
Wo Base64url vorkommt
Base64url eignet sich, wenn Binärdaten in Komponenten stehen, die + und / besonders behandeln.
| Fall | Beschreibung |
|---|---|
| JWT und JWS | Segmente verwenden ungepaddetes Base64url zusammen mit externen kryptografischen Regeln. |
| URL-Parameter | Verringert Escaping von + und /, ersetzt aber nicht die Syntaxprüfung der gesamten URL. |
| Opake Kennungen | Zufallsbytes lassen sich kompakt als Text serialisieren. |
| Dateinamen | Das Alphabet vermeidet übliche Pfadtrenner. |
| API-Tests | Deckt Verwechslungen zwischen Standard-Base64 und Base64url auf. |
Häufige Base64url-Fehler
Standard-Base64 mit + oder /, eingefügter Leerraum und eine falsche Anzahl = sind die häufigsten Ursachen.
Eine Zeichenfolge kann korrekte Bytes ergeben, aber kein UTF-8-Text sein. Token brauchen zudem Struktur- und Signaturprüfung außerhalb dieses Werkzeugs.
- Verwechsle Base64url nicht mit Percent-Encoding.
- Das Entfernen von = repariert keinen beliebigen Wert.
- Das Zeichen + ist nicht zulässig.
- Länge 1 modulo 4 ist unmöglich.
- Kodierung beweist keine Authentizität.
Base64url, Standard-Base64 und URL-Encoding
Base64url und Standard-Base64 stellen dieselben Bits mit zwei unterschiedlichen Symbolen dar. URL-Encoding arbeitet auf URL-Zeichen und verwendet %HH.
Base32 ist länger und hat ein kleineres Alphabet; Base58 entfernt mehrdeutige Zeichen, verwendet aber einen anderen Algorithmus.
| Fall | Beschreibung |
|---|---|
| Standard-Base64 | Verwendet + und / und behält häufig Padding. |
| URL-Encoding | Stellt reservierte Bytes mit Prozentkodierung dar und ist keine Base64-Variante. |
| Base32 | Verwendet fünf Bits pro Symbol mit A-Z und 2-7. |