Hvordan Base64-koding fungerer

Innholdsfortegnelse:

Hvordan Base64-koding fungerer
Hvordan Base64-koding fungerer
Anonim

Base64-koding er en prosess for å konvertere binære data til et ASCII-strengformat ved å konvertere de binære dataene til en 6-bits tegnrepresentasjon. Base64-metoden for koding brukes når binære data, for eksempel bilder eller video, overføres over systemer som er designet for å overføre data i et rentekstformat (ASCII).

Hvorfor brukes Base64-koding?

Behovet for Base64-koding kommer fra problemene som oppstår når medier overføres i rå binært format til tekstbaserte systemer.

Siden tekstbaserte systemer (som e-post) tolker binære data som et bredt spekter av tegn, inkludert spesialkommandotegn, blir mye av de binære dataene som overføres til overføringsmedier feiltolket av disse systemene og tapt eller ødelagt i overføringsprosessen.

Image
Image

En metode for å kode denne typen binære data på en måte som unngår slike overføringsproblemer, er å sende den som ren ASCII-tekst i Base64-kodet format. Dette er en av teknikkene som brukes av MIME-standarden for å sende andre data enn ren tekst.

Mange programmeringsspråk, som PHP og Javascript, inkluderer Base64-kodings- og dekodingsfunksjoner for å tolke data som overføres med Base64-koding.

Base64-kodingslogikk

Base64-koding bryter binære data i 6-bits segmenter på 3 fulle byte og representerer de som utskrivbare tegn i ASCII-standard. Den gjør det i hovedsak i to trinn.

Det første trinnet er å bryte den binære strengen ned i 6-bits blokker. Base64 bruker bare 6 bits (tilsvarende 2^6=64 tegn) for å sikre at kodede data er utskrivbare og lesbare av mennesker. Ingen av spesi altegnene som er tilgjengelige i ASCII brukes.

De 64 tegnene (derav navnet Base64) er 10 sifre, 26 små bokstaver, 26 store bokstaver samt plusstegnet (+) og skråstreken fremover (/). Det er også et 65. tegn kjent som en pad, som er likhetstegnet (=). Dette tegnet brukes når det siste segmentet av binære data ikke inneholder hele 6 bits.

Base64-kodingseksempel

Ta for eksempel tre ASCII-tall 155, 162 og 233. Disse tre tallene utgjør en binær strøm på 1001101110100010111101001. En binær fil, som et bilde, inneholder en binær strøm som kjører for titalls eller hundretusenvis av nuller og ener.

En Base64-koder starter med å dele den binære strømmen inn i grupperinger på seks tegn: 100110 111010 001011 101001. Hver av disse grupperingene oversettes til tallene 38, 58, 11 og 41.

En seks-tegns binær strøm konverterer mellom binære (eller base-2) til desim altegn (base-10) ved å kvadrere hver verdi representert av en 1 i den binære sekvensen med sin posisjonelle kvadrat. Starter fra høyre og flytter til venstre, og starter med null, representerer verdiene i den binære strømmen 2^0, deretter 2^1, så 2^2, så 2^3, så 2^4, så 2^5.

Her er en annen måte å se det på. Fra venstre er hver posisjon verdt 1, 2, 4, 8, 16 og 32. Hvis det binære tallet har en 1 i sporet, legger du til den verdien; hvis den har 0 i sporet, har du ikke det. Den binære strengen 100110 konverteres til desim altallet 38: 02^01 + 12^1 + 12^2 + 02^3 + 02^4 + 12^5=0+2 +4+0+0+32.

Base64-koding tar denne binære strengen og deler den ned i 6-bits verdiene 38, 58, 11 og 41.

Til slutt blir disse tallene konvertert til ASCII-tegn ved hjelp av Base64-kodingstabellen. 6-bits verdiene i dette eksemplet oversettes til ASCII-sekvensen m6Lp.

Bruk av Base64-konverteringstabellen:

  • 38 er m
  • 58 er 6
  • 11 er L
  • 41 er p

Denne totrinnsprosessen brukes på hele den binære strengen som er kodet.

For å sikre at de kodede dataene kan skrives ut på riktig måte og ikke overskrider noen e-postservers linjelengdegrense, settes nylinjetegn inn for å holde linjelengden under 76 tegn. Nylinjetegnene er kodet som alle andre data.

Hele formålet med Base64-koding, fra å legge til utfylling for å bevare 3-byte binære segmenter til å konvertere binær til tekst ved hjelp av Base64-tabellen, er å bevare integriteten til den overførte binære informasjonen.

Base64-kodingstabell

Den følgende tabellen oversetter alle 64 tegnene som brukes i Base64-koding.

Base64-kodingstabell
Value Char Value Char Value Char Value Char
0 A 16 Q 32 g 48 w
1 B 17 R 33 h 49 x
2 C 18 S 34 i 50 y
3 D 19 T 35 j 51 z
4 E 20 U 36 k 52 0
5 F 21 V 37 l 53 1
6 G 22 W 38 m 54 2
7 H 23 X 39 55 3
8 I 24 Y 40 o 56 4
9 J 25 Z 41 p 57 5
10 K 26 a 42 q 58 6
11 L 27 b 43 r 59 7
12 M 28 c 44 s 60 8
13 N 29 d 45 t 61 9
14 O 30 e 46 u 62 +
15 P 31 f 47 v 63 /

Solving the Endgame

På slutten av kodingsprosessen kan det være et problem. Hvis størrelsen på de opprinnelige dataene i byte er et multiplum av tre, fungerer alt bra. Hvis den ikke er det, kan det være tomme byte. For riktig koding kreves nøyaktig 3-byte med binære data.

Løsningen er å legge til nok byte med verdien 0 for å lage en 3-byte gruppe. To slike verdier legges til hvis dataene trenger én ekstra byte med data, én legges til for to ekstra byte.

Selvfølgelig kan disse kunstige etterfølgende 0-ene ikke kodes ved hjelp av kodingstabellen nedenfor. De må representeres av et 65. tegn. Base64-utfyllingstegnet er likhetstegnet (=) og plasseres på slutten av kodede data.

Anbefalt: