Si punon Encoding Base64

Nëse interneti është autostrada e informacionit, atëherë rruga për postë elektronike është një luginë e ngushtë. Vetëm karroca shumë të vogla mund të kalojnë.

Sistemi i transportit të postës elektronike është i dizajnuar vetëm për tekstin ASCII të thjeshtë. Tentimi për të dërguar tekst në gjuhë të tjera ose fotografi arbitrare është sikur të marrësh një kamion nëpër luginë.

Si kalon kamioni i madh përmes luginës?

Atëherë, si po dërgoni një kamion të madh përmes një përroskë të vogël? Duhet ta grumbulloni në një fund, të transportoni copat nëpër përroskë dhe të rindëroni kamionin nga pjesët në anën tjetër.

E njëjta gjë ndodh kur dërgoni një shtojcë skedari përmes postës elektronike . Në një proces të njohur si kodimi, të dhënat binare transformohen në tekst ASCII, të cilat mund të transportohen në email pa probleme. Në fund të marrësit, të dhënat janë dekoduar dhe dosja origjinale është rindërtuar.

Një metodë e kodimit të të dhënave arbitrare si tekst i thjeshtë ASCII është Baza64. Është një nga teknikat e përdorura nga standardi MIME për të dërguar të dhëna të ndryshme nga teksti i thjeshtë .

Base64 në Shpëtim

Encoding Base64 merr tre bytes, secila e përbërë nga tetë bit, dhe i përfaqëson ato si katër karaktere të shtypshëm në standardin ASCII. Kjo e bën këtë në thelb dy hapa.

Hapi i parë është konvertimi i tre byteve në katër numra të gjashtë biteve. Secili karakter në standardin ASCII përbëhet nga shtatë bit. Base64 përdor vetëm 6 bite (që korrespondojnë me 2 ^ 6 = 64 karaktere) për të siguruar që të dhënat e koduara janë të shtypshëm dhe të lexueshme në mënyrë njerëzore. Asnjë nga personazhet speciale të disponueshme në ASCII nuk përdoren.

64 karaktere (prandaj emri Base64) janë 10 shifra, 26 shkronja të vogla, 26 shkronja të mëdha, si dhe '+' dhe '/'.

Nëse për shembull, tre bajt janë 155, 162 dhe 233, bërthamë përkatëse (dhe e frikshme) është 100110111010001011101001, e cila korrespondon me vlerat 6-bit 38, 58, 11 dhe 41.

Këto shifra konvertohen në shenja ASCII në hapin e dytë duke përdorur tabelën e kodimit Base64. Vlerat 6-bit të shembullit tonë përkthehen në sekuencën ASCII "m6Lp".

Ky proces me dy hapa zbatohet për të gjithë rendin e bytes që janë të koduar. Për të siguruar që të dhënat e koduara mund të shtypen siç duhet dhe nuk i kalojnë kufijtë e gjatësisë së linjës së serverit të postës, germat e vijës së re futen për të mbajtur gjatësitë e linjave nën 76 karaktere. Personazhet e vijës së re janë koduar si të gjitha të dhënat e tjera.

Zgjidhja e Endgame

Në fund të procesit të kodimit, ne mund të hasim në një problem. Nëse madhësia e të dhënave origjinale në bytes është një shumëfish i tre, gjithçka funksionon mirë. Nëse nuk është kështu, mund të përfundojmë me një ose dy byte 8-bit. Për kodimin e duhur, megjithatë kemi nevojë saktësisht tre bytesa.

Zgjidhja është që të shtoni bytes të mjaftueshëm me një vlerë prej '0' për të krijuar një grup 3-byte. Dy vlera të tilla shtohen nëse kemi një byte shtesë të të dhënave, një është shtuar për dy bajt shtesë.

Natyrisht, këto zvarritje artificiale 0 nuk mund të kodohen duke përdorur tabelën e kodimit më poshtë. Ata duhet të përfaqësohen nga një personazh i 65-të.

Karakteri i mbushjes Base64 është '='. Natyrisht, ajo mund të shfaqet vetëm në fund të të dhënave të koduara.

Tabela Encoding Base64

vlerë shkrumb vlerë shkrumb vlerë shkrumb vlerë shkrumb
0 A 16 Q 32 G 48 w
1 B 17 R 33 orë 49 x
2 C 18 S 34 unë 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 unë 24 Y 40 o 56 4
9 J 25 Z 41 p 57 5
10 K 26 një 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 /