Base64 er en repræsentation af bytes ved hjælp af et begrænset tekstalfabet. Det er nyttigt, når en transport accepterer tekst, men nyttelasten er binær. Operationen er reversibel: en korrekt dekoder gendanner de originale bytes, inklusive nuller og værdier, der ikke er gyldige tegn. At vælge, hvordan disse bytes skal fortolkes, er et separat trin.
Tre bytes bliver til fire tegn
En byte indeholder otte bits. Tre bytes leverer 24 bit, som opdeles jævnt i fire grupper af seks. Hver gruppe vælger en af 64 alfabettegn. Standardalfabetet indeholder store bogstaver, små bogstaver, cifre, plus og skråstreg. For teksten ASCII Man, er bytes 4d 61 6e i hexadecimal, og det kodede output er TWFu.
Input bytes: 01001101 01100001 01101110
Six-bit sets: 010011 010110 000101 101110
Indexes: 19 22 5 46
Output: T W F u
Padding beskriver den sidste gruppe
Når der er en byte tilbage, har output to alfabettegn og to lighedstegn. To resterende bytes producerer tre alfabettegn og et lighedstegn. Således M bliver TQ==, mens Ma bliver TWE=. Udfyldningen er en del af strukturen: tilfældige lighedstegn kan ikke gendanne et manglende datategn. Ved kanonisk kodning skal de ubrugte bit i det sidste alfabettegn også være nul.
For n inputbytes indeholder output med udfyldning 4 × ceil(n / 3) tegn. En fil på 1.024 byte giver derfor 1.368 tegn, før der tilføjes et Data URI-præfiks eller linjeskift. Base64 komprimerer ikke data, men et separat komprimeringslag til overførslen kan reducere den endelige overførselsstørrelse.
Valider før tolkning
Brug streng tilstand, når du tester en producent mod en defineret protokol. Brug kompatibilitetstilstand, når en kendt kilde har indsat ASCII linjeskift, udeladt polstring eller inkluderet en Data URI-indpakning. Gennemgå de registrerede justeringer. Uventet tegnsætning, blandede alfabeter og ikke-nul ubrugte bits fortjener undersøgelse, ikke stille sletning.
Til sidst skal du kontrollere de afkodede bytes. Gyldig Base64 kan indeholde en ugyldig UTF-8 sekvens, et trunkeret billede eller et ufuldstændigt PDF. En vellykket afkodning beviser kun kodningslaget. Gem binære resultater som bytes og brug den passende filparser til at kontrollere deres struktur. Reglerne for alfabet, udfyldning og kanoniske bit er specificeret i RFC 4648.