Zum Inhalt springen
OpsKit

Base64-Encoder / -Decoder

Wandelt Text in Base64 um und zurück. Behandelt Umlaute und andere Nicht-ASCII-Zeichen korrekt, unterstützt das URL-sichere Alphabet von JWT und sagt Ihnen, wenn der Inhalt binär ist, statt ihn stillschweigend zu zerstören.

Ausgabe

Läuft vollständig im Browser. Diese Seite ist eine statische Datei. Was Sie eingeben, bleibt im Tab, wird nie an einen Server geschickt und ist beim Schließen verschwunden — ein echtes Token oder eine echte Konfiguration einzufügen ist also unbedenklich.

Wann man das braucht

  • Beim Lesen eines Kubernetes-Secrets, bei dem kubectl get secret jeden Wert Base64-kodiert anzeigt.
  • Beim Einbetten eines kleinen Bildes oder Zertifikats in eine Konfigurationsdatei, eine Umgebungsvariable oder eine Data-URI.
  • Beim Prüfen eines Authorization-Headers, einer Webhook-Nutzlast oder eines JWT-Segments, das kodiert ankam.

Durchgerechnete Beispiele

Reines ASCII

Eingabe
hello world
Ergebnis
aGVsbG8gd29ybGQ=

Das abschließende = ist Padding und gehört nicht zu den Daten.

Text mit Umlauten

Eingabe
Grüße
Ergebnis
R3LDvMOfZQ==

ü und ß belegen in UTF-8 je zwei Bytes. Werkzeuge, die btoa() verwenden, werfen hier einen Fehler.

URL-sicher, für ein JWT-Segment

Eingabe
{"alg":"HS256","typ":"JWT"}
Ergebnis
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9

Kein Padding und keine + oder / — übersteht damit den Weg in eine URL.

Wo es meistens schiefgeht

Base64 für Verschlüsselung halten

Es ist eine Kodierung, von jedem umkehrbar. Ein Kubernetes-Secret ist Base64-kodiert, nicht geschützt — behandeln Sie den Inhalt in Ihrem Bedrohungsmodell als Klartext.

URL-sicheres Base64 an einen Standard-Decoder geben

JWT-Segmente nutzen - und _ und lassen das Padding weg. Ein strenger Standard-Decoder lehnt sie ab. Wandeln Sie erst das Alphabet um und füllen Sie auf ein Vielfaches von 4 auf.

Bytes durch einen abschließenden Zeilenumbruch verlieren

echo "secret" | base64 kodiert den abschließenden Zeilenumbruch mit. Nutzen Sie echo -n oder printf, wenn der Wert exakt stimmen muss.

Häufige Fragen

Warum ist die kodierte Zeichenkette länger als das Original?

Base64 stellt 3 Bytes mit 4 Zeichen dar, die Ausgabe wächst also um rund 33 % plus Padding. Dieser Aufschlag ist der Preis dafür, Binärdaten durch einen reinen Textkanal zu schicken.

Kann ich hier gefahrlos ein Produktivgeheimnis einfügen?

Die Seite ist statisch und die Umwandlung passiert in JavaScript in Ihrem Tab. Es wird nichts übertragen. Öffnen Sie beim Tippen das Netzwerk-Panel Ihres Browsers und überzeugen Sie sich selbst.

Wie mache ich das stattdessen im Terminal?

Kodieren mit printf '%s' 'text' | base64, dekodieren mit base64 -d. Unter macOS lautet die Dekodier-Option -D. Für URL-sichere Ausgabe hängen Sie | tr '+/' '-_' | tr -d '=' an.

Verwandte Werkzeuge