So funktioniert Base64
Base64 schreibt beliebige Bytes mit 64 sicheren Zeichen, sodass Binärdaten durch Systeme wandern können, die für Text gebaut sind: E-Mail, JSON, URLs, HTTP-Header. Je 3 Bytes (24 Bit) werden zu 4 Zeichen mit je 6 Bit. Lassen sich die Daten nicht in Dreiergruppen teilen, ist die letzte Gruppe kürzer, und =-Zeichen füllen sie auf 4 Zeichen auf.
M a n 01001101 01100001 01101110 010011 010110 000101 101110 T W F u → TWFu
Text wird zuerst in Bytes umgewandelt, und diese Seite verwendet dafür UTF-8, die Kodierung, die fast jedes System erwartet. Deshalb wird „é“ hier zu w6k=; die eigene Funktion btoa() des Browsers scheitert an solchen Zeichen. Die URL-sichere Variante aus RFC 4648 ersetzt + und / durch - und _, die in Adressen und Dateinamen keine Maskierung brauchen, und lässt das Padding oft weg. JSON Web Tokens verwenden sie.
Beim Dekodieren akzeptiert die Seite beide Alphabete, fehlendes Padding, Zeilenumbrüche und das Präfix einer data-URL. Ist ein Zeichen kein Base64, nennt sie das Zeichen und die Stelle. Sind die Bytes kein gültiger UTF-8-Text, werden sie als Hex angezeigt, mit einem Download, der den Dateityp anhand der ersten Bytes errät.
Beispiel
Das Wort „foobar“ besteht aus 6 Bytes und wird zu 8 Zeichen ohne Padding kodiert: Zm9vYmFy. „fooba“ hat 5 Bytes und bekommt ein „=“: Zm9vYmE=. „f“ allein wird zu Zg==. Das sind die Testwerte aus RFC 4648.
Fragen
Ist Base64 eine Verschlüsselung?
Nein. Base64 ist eine Kodierung: Jeder kann sie ohne Schlüssel dekodieren, genau wie diese Seite es tut. Sie verbirgt nichts. Ein Passwort in einem Basic-Auth-Header oder einem Kubernetes-Secret ist nur Base64-kodiert, schützen Sie es also mit HTTPS und Zugriffsregeln, nicht mit der Kodierung.
Warum ist Base64 größer als das Original?
Aus je 3 Bytes werden 4 Zeichen, das Ergebnis ist also etwa 33 % größer, plus bis zu zwei =-Zeichen. Zeilenumbrüche alle 76 Zeichen, wie sie E-Mail verwendet, machen es noch etwas größer. Das ist der Preis dafür, nur sichere Textzeichen zu verwenden.
Was ist URL-sicheres Base64?
Die in RFC 4648 Abschnitt 5 definierte Variante. Sie verwendet - und _ statt + und /, die in URLs und Dateinamen besondere Bedeutungen haben, und lässt das =-Padding oft weg. JSON Web Tokens und viele APIs nutzen sie. Diese Seite dekodiert beide Varianten und kodiert über die Option oben in beiden.
Warum ergibt das Dekodieren seltsame Zeichen?
Entweder sind die Daten kein Text, sondern etwa ein Bild, ein Archiv oder ein Schlüssel, oder der Text wurde mit einem anderen Zeichensatz als UTF-8 kodiert. Diese Seite zeigt Binärdaten als Hex und lässt Sie sie als Datei herunterladen. Sehen Sie in sonst lesbarem Text einige falsche Buchstaben, hat die Quelle wahrscheinlich Latin-1 oder Windows-1252 verwendet.
Wie dekodiere ich Base64 auf der Kommandozeile?
Unter Linux: echo 'Zm9vYmFy' | base64 -d. Unter macOS: base64 -D, in neueren Versionen auch base64 --decode. Eine Datei kodieren Sie unter Linux mit base64 -w 0 file in einer langen Zeile, unter macOS mit base64 -i file. In PowerShell: [Convert]::FromBase64String('Zm9vYmFy').