Base64-validator

Indsæt en streng for at finde ud af, om den er gyldig Base64. Validatoren angiver varianten, peger på ugyldige tegn og problemer med udfyldningen og fortæller dig, hvad dataene afkodes til.

Kører udelukkende i din browser. Intet bliver uploadet.

Sådan bruger du værktøjet

  1. Indsæt den streng, du vil kontrollere, i inputfeltet.
  2. Læs resultatet: Gyldig Base64 eller Ikke gyldig Base64, den genkendte variant (standard eller URL-sikker) og den afkodede størrelse.
  3. Hvis der står noget under Problemer, kan du bruge de angivne positioner til at finde ugyldige tegn, blanktegn eller fejlplaceret udfyldning.
  4. Se på den genkendte indholdstype under Indhold for at finde ud af, om dataene er tekst eller en fil som PNG, PDF eller ZIP.

Det gør Base64 gyldig

  • Alfabet. Kun A-Z, a-z, 0-9 og to tegn mere er tilladt: + og / i standard-Base64, - og _ i Base64URL. En streng, der blander begge par, er som regel blevet beskadiget eller sat sammen fra to kilder.
  • Udfyldning. Tegnet = må kun stå til sidst og højst to gange. Udfyldning midt i strengen betyder som regel, at to kodede værdier er blevet sat sammen.
  • Længde. Med udfyldning er længden et multiplum af 4. Uden udfyldning er alle længder gyldige undtagen 4n + 1: Ét overskydende tegn indeholder kun 6 bit, hvilket ikke er nok til en byte.

Strenge dekodere har en regel mere: De ubrugte lave bit i det sidste tegn skal være nul. Mange dekodere ignorerer de bit, men nogle, for eksempel base64.StdEncoding.Strict() i Go, afviser strengen.

Typiske fejl, og sådan retter du dem

ProblemTypisk årsagLøsning
Ugyldigt tegnAnførselstegn, omvendte skråstreger eller procentkoder som %2B og %3D, der er kommet med, da værdien blev kopieretFjern de ekstra tegn, eller URL-afkod først
Mellemrum midt i strengen+ er blevet til mellemrum, da værdien blev sendt gennem en URL eller en formularSæt + ind igen, eller brug Base64URL til URL'er
Længde på 4n + 1Værdien er afkortet af en kolonnegrænse, en loglinje eller en ufuldstændig kopieringKopiér hele værdien igen
Udfyldning midt i strengenTo Base64-strenge, der er sat sammenDel strengen op, og afkod hver del for sig
LinjeskiftOmbrydning til MIME eller PEMSom regel harmløst; fjern dem, hvor der kræves én linje

Gyldig betyder ikke meningsfuld

Base64 har hverken header eller kontrolsum, så gyldighed fortæller kun, at en streng kan afkodes. Mange almindelige ord består testen: Fire vilkårlige bogstaver udgør altid en gyldig gruppe. Derfor afkoder validatoren også dataene og viser deres størrelse og indholdstype. Læsbar tekst eller en kendt filsignatur som PNG, PDF eller ZIP er et godt tegn på, at strengen virkelig er Base64; en håndfuld tilfældige bytes er det ikke. Hvis du også vil teste andre kodninger, kan du prøve kodningsgenkendelsen.

Validering af Base64 i kode

// JavaScript: standard-Base64 med udfyldning (matcher også en tom streng)
/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/

# Python: udløs en fejl i stedet for at springe ugyldige tegn over
import base64, binascii
try:
    base64.b64decode(s, validate=True)
except binascii.Error:
    print('invalid')

Ofte stillede spørgsmål

Hvorfor bliver et almindeligt ord vist som gyldig Base64?
Fordi det er gyldigt. Enhver række af alfabettegn med en passende længde afkodes til nogle bytes; ordet test afkodes for eksempel til tre bytes. Se på den genkendte indholdstype: Hvis resultatet hverken er læsbar tekst eller en kendt filtype, var inputtet sandsynligvis aldrig Base64.
Er Base64 med mellemrum eller linjeskift gyldig?

MIME og PEM ombryder Base64 i linjer, og de fleste dekodere springer blanktegn over. JSON-felter, HTTP-headere, JWT'er og data URI'er forventer dog én ubrudt streng. Validatoren viser blanktegn for sig, så du selv kan afgøre, om det har betydning dér, hvor strengen skal bruges.

Er Base64 uden =-udfyldning gyldig?
Ofte, ja. Base64URL udelader normalt udfyldningen, og RFC 4648 tillader, at den udelades, når længden er kendt fra sammenhængen. Nogle strenge dekodere kræver den dog stadig; tilføj =-tegn, indtil længden er et multiplum af 4, hvis et system afviser strengen. Strenge uden udfyldning på 4n + 1 tegn er aldrig gyldige.
Hvordan tjekker jeg i JavaScript, om en streng er Base64?
Til streng kontrol af Base64 med udfyldning kan du teste mod et regulært udtryk, der tillader grupper på fire alfabettegn efterfulgt af valgfri udfyldning. Et hurtigere tjek er at kalde atob() inde i try/catch. Bemærk, at atob() kaster en InvalidCharacterError ved ugyldigt input, men stiltiende accepterer blanktegn og manglende udfyldning, og at den ikke accepterer de URL-sikre tegn.