Så använder du verktyget
- Klistra in strängen du vill kontrollera i indatafältet.
- Läs resultatet: giltig eller ogiltig, identifierad variant (standard eller URL-säker) och avkodad storlek.
- Om problem listas kan du använda de angivna positionerna för att hitta ogiltiga tecken, blanktecken eller felplacerad utfyllnad.
- Titta på den identifierade innehållstypen för att se om datan är text eller en fil som PNG, PDF eller ZIP.
Vad som gör Base64 giltig
- Alfabet. Bara
A-Z,a-z,0-9och två ytterligare tecken är tillåtna:+och/i standard-Base64,-och_i Base64URL. En sträng som blandar båda paren har oftast skadats eller satts ihop från två källor. - Utfyllnad. Tecknet
=får bara förekomma i slutet, och högst två gånger. Utfyllnad mitt i strängen betyder oftast att två kodade värden har slagits ihop. - Längd. Med utfyllnad är längden en multipel av 4. Utan utfyllnad fungerar alla längder utom 4n + 1: ett ensamt överblivet tecken rymmer bara 6 bitar, vilket inte räcker till en byte.
Strikta avkodare har ytterligare en regel: de oanvända låga bitarna i det sista tecknet måste vara noll. Många avkodare ignorerar de bitarna, men vissa, som Gos base64.StdEncoding.Strict(), avvisar strängen.
Vanliga fel och hur du åtgärdar dem
| Problem | Vanlig orsak | Åtgärd |
|---|---|---|
| Ogiltigt tecken | Citattecken, omvända snedstreck eller sekvenser som %2B och %3D som har kopierats med värdet | Ta bort de extra tecknen eller URL-avkoda först |
| Mellanslag mitt i strängen | + har blivit mellanslag när värdet passerat en URL eller ett formulär | Sätt tillbaka +, eller använd Base64URL i URL:er |
| Längd på 4n + 1 | Värdet har kapats av en kolumngräns, en loggrad eller en ofullständig kopiering | Kopiera hela värdet igen |
| Utfyllnad mitt i strängen | Två Base64-strängar har slagits ihop | Dela upp strängen och avkoda varje del för sig |
| Radbrytningar | Radbrytning enligt MIME eller PEM | Oftast ofarligt; ta bort dem där en enda rad krävs |
Giltig betyder inte meningsfull
Base64 har varken huvud eller kontrollsumma, så giltighet säger bara att en sträng går att avkoda. Många vanliga ord klarar testet: fyra valfria bokstäver bildar en giltig grupp. Därför avkodar valideraren också datan och rapporterar dess storlek och innehållstyp. Läsbar text eller en känd filsignatur som PNG, PDF eller ZIP är ett starkt tecken på att strängen verkligen är Base64; en handfull slumpmässiga byte är det inte. Vill du testa andra kodningar också kan du prova kodningsidentifieraren.
Validera Base64 i kod
// JavaScript: standard-Base64 med utfyllnad (matchar även en tom sträng)
/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/
# Python: kasta ett fel i stället för att hoppa över ogiltiga tecken
import base64, binascii
try:
base64.b64decode(s, validate=True)
except binascii.Error:
print('invalid')
Vanliga frågor
Varför rapporteras ett vanligt ord som giltig Base64?
test avkodas till exempel till tre byte. Titta på den identifierade innehållstypen: om resultatet varken är läsbar text eller en känd filtyp var indatan troligen aldrig Base64.Är Base64 med mellanslag eller radbrytningar giltig?
MIME och PEM delar upp Base64 i rader, och de flesta avkodare hoppar över blanktecken. JSON-fält, HTTP-headers, JWT:er och data URI:er förväntar sig däremot en enda obruten sträng. Valideraren listar blanktecken separat så att du kan avgöra om det spelar någon roll där strängen ska användas.
Är Base64 utan utfyllnad med = giltig?
=-tecken tills längden är en multipel av 4 om ett system avvisar strängen. Strängar utan utfyllnad med 4n + 1 tecken är aldrig giltiga.Hur kontrollerar jag om en sträng är Base64 i JavaScript?
atob() inuti try/catch. Observera att atob() kastar ett InvalidCharacterError vid felaktig indata men tyst accepterar blanktecken och saknad utfyllnad, och att den inte accepterar de URL-säkra tecknen.