Web & Kodierung · 5 Min. gelesen
Base64 dekodieren und kodieren: für den Transport, nicht für
Base64 dient zum Verschieben von Binärdaten über Kanäle, die nur Text akzeptieren. Es ordnet alle drei Bytes vier druckbare Zeichen zu, weshalb die codierte Ausgabe etwa ein Drittel größer als die Eingabe ist und eine Base64-Dekodierung vollständig umkehrbar ist – ohne Schlüssel, da Base64 eine Kodierung und keine Verschlüsselung ist. Jeder kann alles entschlüsseln, was Sie codieren, und jedes Tool, das etwas anderes suggeriert, lügt Sie an.
Aktualisiert
Das Alphabet und die Polsterung
Das Standardalphabet ist `A–Z`, `a–z`, `0–9`, `+` und `/`, wobei `=` die letzte Gruppe auffüllt, wenn die Eingabelänge kein Vielfaches von drei ist. Diese Auffüllung ist nicht dekorativ: Sie teilt dem Decoder mit, wie viele Bytes die letzte Gruppe enthält. Das Entfernen ist bei URLs üblich und funktioniert, weil Decoder die Länge ableiten, aber strikte Implementierungen lehnen die nicht aufgefüllte Form ab.
"YamlBox" → WWFtbEJveA==
"YamlBo" → WWFtbEJv
base64url: die Variante, die in Token landet
URLs behandeln `+`, `/` und `=` als signifikant, daher ersetzt die base64url-Variante sie durch `-` und `_` und verzichtet häufig vollständig auf das Auffüllen. Jeder JSON-Web-Token verwendet dieses Alphabet, weshalb eine JWT-Nutzlast, die in einen strikten Base64-Decoder eingefügt wird, bei Zeichen, die völlig normal aussehen, fehlschlagen kann. Wenn eine Zeichenfolge in etwas nahezu, aber nicht ganz Lesbares dekodiert wird, sind Sie normalerweise einen Buchstabenwechsel von der Antwort entfernt.
Wo man es in der Praxis trifft
- Daten-URIs – Einbetten kleiner Bilder und Schriftarten direkt in CSS oder HTML als `data:image/png;base64,…`.
- JSON Web-Tokens – jedes der drei Segmente ist Base64URL-codiert.
- HTTP-Basisauthentifizierung – `Authorization: Basic` trägt Base64 von `user:password`, weshalb sie immer über TLS übertragen werden muss.
- E-Mail-Anhänge – MIME verwendet seit den 1980er Jahren Base64 für Binärteile.
- APIs, die keine binären Bildnutzlasten und Schlüssel akzeptieren können, die in Nur-Text-Feldern platziert werden.
Warum die Base64-Dekodierungsausgabe wie Müll aussieht
Der klassische Fehler ist Unicode. Die älteren `btoa` und `atob` von JavaScript arbeiten mit einem Byte pro Zeichen, sodass eine Zeichenfolge, die `é`, `₹` oder ein beliebiges Emoji enthält, entweder Mojibake auslöst oder erzeugt. Die Lösung besteht darin, zuerst die UTF-8-Bytes zu kodieren – `TextEncoder` im Browser, `Buffer.from(str, "utf8")` im Node – und diese dann mit Base64 zu kodieren. Wenn eine Dekodierung plausibel aussehende, aber falsche Zeichen zurückgibt, liegt die wahrscheinlichste Ursache darin, dass der Encoder den Text überhaupt nicht in UTF-8-Bytes konvertiert hat.
Base64 bietet keine Vertraulichkeit oder Integrität. Behandeln Sie ein verschlüsseltes Geheimnis genauso wie das rohe Geheimnis, denn das ist es.
Warum lokal dekodieren?
Basic-Auth-Header, Token und Daten-URIs werden alle in Anmeldeinformationen oder private Daten dekodiert, daher ist das Einfügen in einen serverseitigen Decoder eine Offenlegung. Der YamlBox Base64 Encoder/Decoder funktioniert auf der Seite mit korrekter UTF-8-Verarbeitung, unterstützt sowohl die Standard- als auch die URL-sicheren Alphabete und funktioniert offline.
Base64 Encoder / Decoder – häufig gestellte Fragen
Ist Base64 Verschlüsselung?
Nein. Es handelt sich um eine umkehrbare Kodierung ohne Schlüssel, sodass jeder sie entschlüsseln kann. Es existiert, damit Binärdaten über Nur-Text-Kanäle übertragen werden können – niemals zum Schutz der Daten. Verwenden Sie aus Gründen der Vertraulichkeit TLS und echte Verschlüsselung wie AES-GCM.
Um wie viel größer ist die Leistung von Base64?
Genau ein Drittel größer, plus etwas Auffüllung, denn aus drei Bytes werden vier Zeichen. Dieser Overhead ist der Grund, warum base64 für kleine Inline-Assets verwendet und für große vermieden wird.
Warum gibt eine Base64-Dekodierung seltsame Zeichen zurück?
In der Regel liegt eine Nichtübereinstimmung der Codierung vor: Der Originaltext wurde vor der Codierung nicht in UTF-8-Bytes konvertiert, oder Sie decodieren Base64-URL-Daten mit einem Standarddecoder. Suchen Sie nach den Zeichen `-` und `_` und bestätigen Sie, dass der Quell-Encoder UTF-8 verwendet.
In diesem Beitrag erwähnte Tools
Weitere Artikel zum Lesen
6 Min. gelesen
JWT-Decoder: Was ist in einem Token enthalten und was nicht
Verwenden Sie einen JWT-Decoder, um den Header, die Nutzlast und das Ablaufdatum eines Tokens zu überprüfen – und verstehen Sie, warum die Dekodierung nicht verifiziert, da die Anspruchsprüfungen hinter den meisten 401-Fehlern liegen.
5 Min. gelesen
URL-Kodierung: Wann man fliehen muss und wann man Dinge kaputt
URL korrekt kodieren und dekodieren – reservierte Zeichen plus im Vergleich zu %20, encodeURI im Vergleich zu encodeURIComponent und die Doppelkodierungsfehler hinter defekten Links.
5 Min. gelesen
cURL zum Abrufen: Verschieben einer Anfrage vom Terminal zum
cURL zum Abrufen der Konvertierung für JavaScript: korrekt zugeordnete Header, Textkörper, Authentifizierung und Methoden sowie die CORS-Realität, die entscheidet, ob eine Anfrage funktioniert.