Slik bruker du verktøyet
- Lim inn strengen du vil sjekke, i inndatafeltet.
- Les resultatet: Gyldig Base64 eller Ikke gyldig Base64, gjenkjent variant (standard eller URL-sikker) og dekodet størrelse.
- Hvis det står noe under Problemer, bruker du de oppgitte posisjonene til å finne ugyldige tegn, blanktegn eller feilplassert utfylling.
- 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-9og 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
| Problem | Typisk årsak | Løsning |
|---|---|---|
| Ugyldig tegn | Anførselstegn, omvendte skråstreker eller %2B- og %3D-koder som er kopiert med verdien | Fjern 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 skjema | Sett inn + igjen, eller bruk Base64URL i URL-er |
| Lengde på 4n + 1 | Verdien er avkortet av en kolonnegrense, en logglinje eller ufullstendig kopiering | Kopier hele verdien på nytt |
| Utfylling midt i strengen | To Base64-strenger er slått sammen | Del opp og dekod hver del for seg |
| Linjeskift | Linjebryting fra MIME eller PEM | Vanligvis 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?
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?
=-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?
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.