En praktisk guide til Base64: bits, polstring og validering

Følg bytes gjennom seks-bits grupper, beregn utdatastørrelsen og skille kanoniske Base64 fra gjenopprettelige formateringsproblemer.

Base64 er en representasjon av bytes som bruker et begrenset tekstalfabet. Det er nyttig når en transport godtar tekst, men nyttelasten er binær. Operasjonen er reversibel: en riktig dekoder gjenoppretter de opprinnelige bytene, inkludert nuller og verdier som ikke er gyldige tegn. Å velge hvordan disse bytene skal tolkes er et eget trinn.

Tre byte blir fire tegn

En byte inneholder åtte biter. Tre byte leverer 24 biter, som deler seg jevnt i fire grupper på seks. Hver gruppe velger en av 64 bokstaver. Standardalfabetet inneholder store bokstaver, små bokstaver, sifre, pluss og skråstrek. For teksten ASCII Man, er bytene 4d 61 6e i heksadesimal, og den kodede utgangen er TWFu.

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

Polstring beskriver den endelige gruppen

Når én byte gjenstår, har utdataene to alfabettegn og to likhetstegn. To gjenværende byte produserer tre alfabettegn og ett likhetstegn. Dermed M blir TQ==, mens Ma blir TWE=. Utfyllingen er en del av strukturen: tilfeldige likhetstegn kan ikke gjenopprette et manglende datategn. Ved kanonisk koding må også de ubrukte bitene i det siste alfabettegnet være null.

For n inndatabyte inneholder utdata med utfylling 4 × ceil(n / 3) tegn. En fil på 1 024 byte gir derfor 1 368 tegn før et Data URI-prefiks eller linjeskift legges til. Base64 komprimerer ikke data, men et eget komprimeringslag for overføringen kan redusere den endelige overføringsstørrelsen.

Bekreft før du tolker

Bruk streng modus når du tester en produsent mot en definert protokoll. Bruk kompatibilitetsmodus når en kjent kilde har satt inn ASCII linjeskift, utelatt utfylling eller inkludert en Data URI-omslag. Se gjennom de registrerte justeringene. Uventet tegnsetting, blandede alfabeter og ubrukte biter som ikke er null fortjener undersøkelse, ikke stille sletting.

Til slutt, inspiser de dekodede bytene. Gyldig Base64 kan inneholde en ugyldig UTF-8-sekvens, et avkortet bilde eller et ufullstendig PDF. En vellykket dekoding beviser bare kodingslaget. Lagre binære resultater som byte og bruk den riktige filparseren for å sjekke strukturen deres. Reglene for alfabet, utfylling og kanoniske biter er spesifisert i RFC 4648.