Hoe Base64 kodearret wurket

As it ynternet de ynformaasje is, dan is it paad foar e-post in smelle ravine. Mar allinich lytse carts kinne passe.

It transportsysteem fan e-post is allinnich ûntwurpen foar plain ASCII-tekst. It probearjen fan tekst yn oare talen of jo willekeurige bestannen te stjoeren is lykas in truck troch de ravje te krijen.

Hoe makket de Big Truck troch de Ravine?

As jo ​​dan in lytse kamera stjoere troch in lytse ravine? Jo moatte it opnimme op 'e ein fan' e ein, ferpleatse de stikken troch de ravine en ferfiere de truck út 'e stikken op' e oare ein.

Itselde bart as jo in triemtafel ferstjoere fia e-mail . Yn in proses bekend as kodearring wurdt de binêre data feroare nei ASCII-tekst, dy't yn e-mail sûnder problemen ferfierd wurde kin. Op de ein fan 'e ûntfanger wurdt de gegevens dekodearre en de orizjinele triem is werboud.

Ien metoade foar it kodearjen fan willekeurige gegevens as plain ASCII-tekst is Base64. It is ien fan 'e techniken dy't troch it MIME-standert brûkt wurdt om oare gegevens te ferstjoeren as gewoane tekst .

Base64 nei de Rêding

Base64-kodearring nimt trije bytes, elk besteande út acht bits, en fertsjintwurdiget se as fjouwer printbere karakters yn it ASCII standert. It docht dat yn essensje twa stappen.

De earste stap is om trije bytes yn te fieren nei fjouwer nûmers fan seis bits. Elke karakter yn it ASCII-standert bestiet út sân bits. Base64 brûkt 6 bits (korrespondearjend mei 2 ^ 6 = 64 tekens) om kodearre data te fersoargjen is printber en minsklik lêsber. Gjinien fan 'e spesjale tekens beskikber yn ASCII wurde brûkt.

De 64 tekens (dêrmei de namme Base64) binne 10 sifers, 26 lytse letters, 26 haadletters as "+" en "/".

As it bygelyks de trije bytes binne 155, 162 en 233, is de oerienkommende (en skriklike) bitsstrom 100110111010001011101001, wat yn oerienstimming komt mei de 6-bit-wearden 38, 58, 11 en 41.

Dizze getallen wurde omset yn ASCII-karakters yn 'e twadde stap mei de Base64 kodearring tafel. De 6-bit-wearden fan ús foarbyld oersetten nei de ASCII-sekere "m6Lp".

Dit twa-stap-proses wurdt tapast foar de folsleine sequence fan Bytes dy't kodearre wurde. Om te garandearjen dat de kodearre data gegevens printe wurde en net mear as ien fan 'e linelegongrânte fan e-mailtsjinner tafoege, wurde nije ljepperkenningen ynsteld om linenlange ûnder 76 tekens te hâlden. De nije lettertekens wurde encodearre lykas alle oare gegevens.

Liedend it einspul

Oan 'e ein fan it kodearringproses kinne wy ​​yn in probleem rinne. As de grutte fan 'e orizjinele gegevens yn bytes in meardere fan trije is, wurket alles goed. As it net is, kinne wy ​​einigje mei ien of twa 8-bit bytes. Foar in goede kodearring hawwe wy lykwols trije bytes nedich.

De oplossing is om genôch Bytes oan te passen mei in wearde fan '0' om in 3-byte-groep te meitsjen. Twa soksoarte wearden binne oanbean as wy in ekstra byte fan gegevens hawwe, ien wurdt oansteld foar twa ekstra bytes.

Fansels kinne dizze keunstmjittige trailing '0's net kodearre wurde mei de kodearring tabel hjirûnder. Se moatte fertsjintwurdige wurde troch in 65e karakter.

It Base64-padding-karakter is '='. Natuerlik kin it allinnich ea oan 'e ein fan kodearre data ferskine.

Base64 kodearring tabel

Wearde Char Wearde Char Wearde Char Wearde Char
0 IN 16 Q 32 g 48 w
1 B 17 R 33 h 49 x
2 C 18 S 34 ik 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 n 55 3
8 ik 24 Y 40 o 56 4
9 J 25 Z 41 p 57 5
10 K 26 in 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 /