Base64-Validator

Fügen Sie einen String ein, um herauszufinden, ob er gültiges Base64 ist. Der Validator nennt die Variante, zeigt ungültige Zeichen und Probleme mit der Auffüllung an und verrät, was die Daten nach dem Dekodieren enthalten.

Läuft vollständig in Ihrem Browser. Es wird nichts hochgeladen.

Anleitung

  1. Fügen Sie den zu prüfenden String in das Eingabefeld ein.
  2. Lesen Sie das Ergebnis ab: gültig oder ungültig, die erkannte „Variante“ (Standard oder URL-sicher) und die „Dekodierte Größe“.
  3. Werden „Probleme“ aufgelistet, finden Sie anhand der angegebenen Positionen ungültige Zeichen, Leerraum oder falsch platzierte Auffüllung.
  4. Sehen Sie sich den erkannten „Inhalt“ an, um festzustellen, ob es sich bei den Daten um Text oder um eine Datei wie PNG, PDF oder ZIP handelt.

Was gültiges Base64 ausmacht

  • Alphabet. Erlaubt sind nur A-Z, a-z, 0-9 und zwei weitere Zeichen: + und / in Standard-Base64, - und _ in Base64URL. Ein String, der beide Paare mischt, wurde meist beschädigt oder aus zwei Quellen zusammengesetzt.
  • Auffüllung. Das Zeichen = darf nur am Ende und höchstens zweimal vorkommen. Auffüllung in der Mitte bedeutet meist, dass zwei kodierte Werte aneinandergehängt wurden.
  • Länge. Mit Auffüllung ist die Länge ein Vielfaches von 4. Ohne Auffüllung ist jede Länge zulässig außer 4n + 1: Ein übrig gebliebenes Zeichen enthält nur 6 Bit, zu wenig für ein Byte.

Strikte Decoder kennen eine weitere Regel: Die ungenutzten niederwertigen Bits des letzten Zeichens müssen null sein. Viele Decoder ignorieren diese Bits, manche jedoch, etwa base64.StdEncoding.Strict() in Go, lehnen den String ab.

Häufige Fehler und ihre Behebung

ProblemTypische UrsacheLösung
Ungültiges ZeichenAnführungszeichen, Backslashes oder Escapes wie %2B und %3D, die mit dem Wert kopiert wurdenÜberflüssige Zeichen entfernen oder zuerst URL-dekodieren
Leerzeichen in der Mitte+ wurde zu Leerzeichen, als der Wert eine URL oder ein Formular durchliefDas + wiederherstellen oder für URLs Base64URL verwenden
Länge von 4n + 1Wert durch ein Spaltenlimit, eine Logzeile oder unvollständiges Kopieren abgeschnittenDen vollständigen Wert erneut kopieren
Auffüllung in der MitteZwei Base64-Strings wurden aneinandergehängtAufteilen und jeden Teil einzeln dekodieren
ZeilenumbrücheMIME- oder PEM-UmbruchMeist harmlos; dort entfernen, wo eine einzige Zeile verlangt wird

Gültig heißt nicht sinnvoll

Base64 hat weder Header noch Prüfsumme, die Gültigkeit sagt also nur aus, dass sich ein String dekodieren lässt. Viele gewöhnliche Wörter bestehen die Prüfung: Je vier beliebige Buchstaben bilden eine gültige Gruppe. Deshalb dekodiert der Validator die Daten zusätzlich und gibt Größe und Inhaltstyp an. Lesbarer Text oder eine bekannte Dateisignatur wie PNG, PDF oder ZIP ist ein gutes Indiz dafür, dass es sich wirklich um Base64 handelt; eine Handvoll zufälliger Bytes ist es nicht. Um auch andere Kodierungen zu testen, probieren Sie die Kodierungserkennung aus.

Base64 im Code validieren

// JavaScript: Standard-Base64 mit Auffüllung (passt auch auf einen leeren String)
/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/

# Python: Fehler auslösen, statt ungültige Zeichen zu überspringen
import base64, binascii
try:
    base64.b64decode(s, validate=True)
except binascii.Error:
    print('invalid')

Häufig gestellte Fragen

Warum wird ein gewöhnliches Wort als gültiges Base64 erkannt?
Weil es gültig ist. Jede Folge von Alphabetzeichen mit passender Länge ergibt beim Dekodieren irgendwelche Bytes; das Wort test etwa ergibt drei Bytes. Prüfen Sie den erkannten Inhaltstyp: Ist das Ergebnis weder lesbarer Text noch ein bekannter Dateityp, war die Eingabe vermutlich nie Base64.
Ist Base64 mit Leerzeichen oder Zeilenumbrüchen gültig?

MIME und PEM brechen Base64 in Zeilen um, und die meisten Decoder überspringen Leerraum. JSON-Felder, HTTP-Header, JWTs und Data-URIs erwarten jedoch einen durchgehenden String. Der Validator führt Leerraum gesondert auf, damit Sie entscheiden können, ob er dort, wo der String verwendet wird, eine Rolle spielt.

Ist Base64 ohne =-Auffüllung gültig?
Oft ja. Base64URL lässt die Auffüllung normalerweise weg, und RFC 4648 erlaubt das, wenn die Länge aus dem Kontext bekannt ist. Manche strikten Decoder verlangen sie dennoch; ergänzen Sie =-Zeichen, bis die Länge ein Vielfaches von 4 ist, wenn ein System den String ablehnt. Strings ohne Auffüllung mit 4n + 1 Zeichen sind niemals gültig.
Wie prüfe ich in JavaScript, ob ein String Base64 ist?
Für striktes Base64 mit Auffüllung testen Sie den String mit einem regulären Ausdruck, der Gruppen aus vier Alphabetzeichen gefolgt von optionaler Auffüllung erlaubt. Schneller geht es, atob() innerhalb von try/catch aufzurufen. Beachten Sie, dass atob() bei fehlerhafter Eingabe einen InvalidCharacterError auslöst, Leerraum und fehlende Auffüllung aber stillschweigend akzeptiert und die URL-sicheren Zeichen nicht annimmt.