En praktisk guide till Base64: bitar, utfyllnad och validering

Följ bytes genom sexbitarsgrupper, beräkna utdatastorleken och särskilj kanoniska Base64 från återställbara formateringsproblem.

Base64 är en representation av bytes med ett begränsat textalfabet. Det är användbart när en transport accepterar text men nyttolasten är binär. Operationen är reversibel: en korrekt avkodare återställer de ursprungliga byten, inklusive nollor och värden som inte är giltiga tecken. Att välja hur man ska tolka dessa bytes är ett separat steg.

Tre byte blir fyra tecken

En byte innehåller åtta bitar. Tre byte ger 24 bitar, som delas upp i fyra grupper om sex. Varje grupp väljer ett av 64 bokstäver. Standardalfabetet innehåller stora bokstäver, gemener, siffror, plus och snedstreck. För texten ASCII Man, är byten 4d 61 6e i hexadecimal, och den kodade utdata är TWFu.

Input bytes:  01001101 01100001 01101110
Six-bit sets: 010011 010110 000101 101110
Indexes:      19     22     5      46
Output:       T      W      F      u

Vaddering beskriver den sista gruppen

När en byte återstår har utmatningen två bokstäver och två likhetstecken. Två återstående byte ger tre bokstäver och ett likhetstecken. Alltså M blir TQ==, medan Ma blir TWE=. Utfyllnaden är en del av strukturen: slumpmässigt tillagda likhetstecken kan inte återställa ett saknat datatecken. Vid kanonisk kodning måste även de oanvända bitarna i det sista alfabettecknet vara noll.

För n indatabyte innehåller utdata med utfyllnad 4 × ceil(n / 3) tecken. En fil på 1 024 byte ger därför 1 368 tecken innan ett Data URI-prefix eller radbrytningar läggs till. Base64 komprimerar inte, men ett separat komprimeringslager för överföringen kan minska den slutliga överföringsstorleken.

Validera innan tolkning

Använd strikt läge när du testar en producent mot ett definierat protokoll. Använd kompatibilitetsläge när en känd källa har infogat ASCII radbrytningar, utelämnat utfyllnad eller inkluderat ett Data URI-omslag. Granska de registrerade justeringarna. Oväntade skiljetecken, blandade alfabet och oanvända bitar som inte är noll förtjänar utredning, inte tyst radering.

Slutligen, inspektera de avkodade byten. Giltig Base64 kan innehålla en ogiltig UTF-8-sekvens, en trunkerad bild eller en ofullständig PDF. En lyckad avkodning bevisar endast kodningsskiktet. Spara binära resultat som byte och använd lämplig filtolkare för att kontrollera deras struktur. Reglerna för alfabet, utfyllnad och kanoniska bitar specificeras i RFC 4648.