Base64 ist eine Schreibweise, keine Verschlüsselung
Base64 schreibt beliebige Bytes nur mit A–Z, a–z, 0–9 und zwei Symbolen um. Drei Bytes werden in vier Gruppen zu je sechs Bit zerlegt, von denen jede zu einem Zeichen wird; die Ausgabe ist daher etwa vier Drittel so lang wie die Eingabe. Gleichheitszeichen füllen eine unvollständige letzte Gruppe auf.
Sein Zweck ist, Binärdaten durch Kanäle zu transportieren, die nur Text annehmen: E-Mail-Anhänge, direkt in eine Seite eingebettete Bilder und Zugangsdaten in einem HTTP-Header. So verhindert es, dass Zwischensysteme Bytes verstümmeln, mit denen sie nicht gerechnet haben.
Mehrbyte-Zeichen werden zuerst in UTF-8 umgewandelt und von dort aus kodiert. Das Wort café umfasst fünf Bytes, weil é zwei belegt, und ergibt daher acht Base64-Zeichen – genauso viele wie ein gewöhnliches Wort mit fünf Buchstaben. Die Ausgabelänge sagt also nichts Verlässliches über die ursprüngliche Zeichenzahl aus.
Verwechseln Sie Kodierung nicht mit Sicherheit
Jeder kann Base64 sofort zurückverwandeln. Ein Passwort oder Token in Base64 zu speichern, verbirgt es nicht; es macht das Lesen nur umständlich, und sobald es in einem Log oder Backup landet, liegt es vollständig offen. Werte, die geheim bleiben müssen, brauchen Verschlüsselung oder Hashing.
Rohes Base64 in einer URL macht sie kaputt. Plus und Schrägstrich aus dem Standardalphabet haben in einer Webadresse eine andere Bedeutung, daher brauchen URLs die URL-sichere Variante, die für diese beiden andere Zeichen einsetzt.
Scheitert die Dekodierung, liegt es meist an Länge oder Auffüllung. Die Länge einer Base64-Zeichenkette muss ein Vielfaches von vier sein, und Zeilenumbrüche oder verirrte Leerzeichen, die beim Kopieren hineingeraten sind, lassen den Parser die Eingabe ablehnen.