Base64-validator

Lim inn en streng for å finne ut om den er gyldig Base64. Validatoren angir varianten, peker på ugyldige tegn og problemer med utfyllingen, og forteller deg hva dataene dekodes til.

Kjører helt i nettleseren din. Ingenting lastes opp.

Slik bruker du verktøyet

  1. Lim inn strengen du vil sjekke, i inndatafeltet.
  2. Les resultatet: Gyldig Base64 eller Ikke gyldig Base64, gjenkjent variant (standard eller URL-sikker) og dekodet størrelse.
  3. Hvis det står noe under Problemer, bruker du de oppgitte posisjonene til å finne ugyldige tegn, blanktegn eller feilplassert utfylling.
  4. Se på den gjenkjente innholdstypen for å finne ut om dataene er tekst eller en fil, for eksempel PNG, PDF eller ZIP.

Hva som gjør Base64 gyldig

  • Alfabet. Bare A-Z, a-z, 0-9 og to tegn til er tillatt: + og / i standard Base64, - og _ i Base64URL. En streng som blander begge parene, er som regel skadet eller satt sammen fra to kilder.
  • Utfylling. Tegnet = kan bare stå på slutten, og høyst to ganger. Utfylling midt i strengen betyr som regel at to kodede verdier er slått sammen.
  • Lengde. Med utfylling er lengden et multiplum av 4. Uten utfylling fungerer alle lengder unntatt 4n + 1: Ett tegn til overs inneholder bare 6 bit, og det er ikke nok til en byte.

Strenge dekodere har én regel til: De ubrukte laveste bitene i det siste tegnet må være null. Mange dekodere ignorerer disse bitene, men noen avviser strengen, for eksempel base64.StdEncoding.Strict() i Go.

Vanlige feil og hvordan du retter dem

ProblemTypisk årsakLøsning
Ugyldig tegnAnførselstegn, omvendte skråstreker eller %2B- og %3D-koder som er kopiert med verdienFjern de ekstra tegnene eller URL-dekod først
Mellomrom midt i strengen+ ble gjort om til mellomrom da verdien gikk gjennom en URL eller et skjemaSett inn + igjen, eller bruk Base64URL i URL-er
Lengde på 4n + 1Verdien er avkortet av en kolonnegrense, en logglinje eller ufullstendig kopieringKopier hele verdien på nytt
Utfylling midt i strengenTo Base64-strenger er slått sammenDel opp og dekod hver del for seg
LinjeskiftLinjebryting fra MIME eller PEMVanligvis ufarlig, men fjern dem der det kreves én linje

Gyldig betyr ikke meningsfylt

Base64 har verken header eller kontrollsum, så gyldighet sier bare at en streng kan dekodes. Mange vanlige ord består testen, for hvilke som helst fire bokstaver utgjør en gyldig gruppe. Derfor dekoder validatoren også dataene og viser størrelsen og innholdstypen. Lesbar tekst eller en kjent filsignatur som PNG, PDF eller ZIP er et godt tegn på at strengen virkelig er Base64, mens en håndfull tilfeldige byte ikke er det. Vil du teste andre kodinger også, kan du prøve kodingsgjenkjenneren.

Validering av Base64 i kode

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

# Python: gi en feil i stedet for å hoppe over ugyldige tegn
import base64, binascii
try:
    base64.b64decode(s, validate=True)
except binascii.Error:
    print('invalid')

Ofte stilte spørsmål

Hvorfor blir et vanlig ord rapportert som gyldig Base64?
Fordi det er gyldig. Enhver rekke med tegn fra alfabetet med passende lengde dekodes til noen byte. Ordet test dekodes for eksempel til tre byte. Sjekk den gjenkjente innholdstypen: Hvis resultatet verken er lesbar tekst eller en kjent filtype, var inndataene sannsynligvis aldri Base64.
Er Base64 med mellomrom eller linjeskift gyldig?

MIME og PEM bryter Base64 opp i linjer, og de fleste dekodere hopper over blanktegn. JSON-felt, HTTP-headere, JWT-er og data URI-er forventer derimot én sammenhengende streng. Validatoren viser blanktegn for seg, slik at du kan avgjøre om det har betydning der strengen skal brukes.

Er Base64 uten =-utfylling gyldig?
Ofte, ja. Base64URL utelater normalt utfyllingen, og RFC 4648 tillater at den droppes når lengden er kjent ut fra konteksten. Noen strenge dekodere krever den likevel. Hvis et system avviser strengen, legger du til =-tegn til lengden er et multiplum av 4. Strenger uten utfylling på 4n + 1 tegn er aldri gyldige.
Hvordan kan jeg sjekke om en streng er Base64 i JavaScript?
For å validere Base64 med utfylling strengt tester du strengen mot et regulært uttrykk som tillater grupper på fire tegn fra alfabetet etterfulgt av valgfri utfylling. En raskere sjekk er å kalle atob() inne i try/catch. Merk at atob() kaster en InvalidCharacterError ved ugyldige inndata, men godtar blanktegn og manglende utfylling uten å si fra, og den godtar ikke de URL-sikre tegnene.