Nola funtzionatzen du Base64 kodeketak?

Internet informazioaren autopista bada, ondoren, posta bidezko bidexka estua da. Kotxe txikiak bakarrik pasa daitezke.

Posta elektronikoaren garraio-sistema ASCII testu soil arruntean bakarrik diseinatuta dago. Beste hizkuntzatan edo fitxategi arbitrarioetan testua bidaltzea saiatzen ari da basamortuan zehar kamioi bat lortzean.

Nola gertatzen da Big Truck Ravine bidez?

Ondoren, nola zabiltzate kamioi handi bat zulo txiki baten bidez? Amaitutako piezak hartu behar dituzu, eskaileretan zehar garraiatzen ditugu piezak eta bestetik beste piezen trukea berreraiki.

Gauza bera gertatzen da fitxategi-eranskin bat bidaltzen duzun posta elektronikoz . Binary datuak kodetzeko prozesuan, ASCII testu bihurtzen da, posta elektronikora eramateko arazorik gabe. Hartzailearen amaieran, datuak deszifratzen dira eta jatorrizko fitxategia berreraiki egiten da.

ASCII testu arrunta bezalako datu arbitrarioak kodetzeko metodo bat Base64 da. MIME estandarrak erabilitako teknikak dira testu arrunta ez den beste datu batzuk bidaltzeko.

Base64 erreskateari

Base64 kodeketak hiru byte hartzen ditu, bakoitza zortzi zatitan banatuta, eta ASCII estandarraren lau inprimaki karaktere gisa adierazten ditu. Bi urratsak funtsean egiten ditu.

Lehenengo pausoa hiru atzeko eta lau bitarteko sei zenbaki bihurtzea da. ASCII estandarraren karaktere bakoitzak zazpi bit ditu. Base64k bakarrik erabiltzen du 6 bit (2 ^ 6 = 64 karaktere), kodetutako datuak inprimagarriak eta giza irakurgarriak direla ziurtatzeko. ASCII erabilgarri dauden karaktere bereziren bat ere ez da erabiltzen.

64 karaktere (honela, Base64 izena) 10 digitu daude, 26 letra xeheak, 26 letra zuri eta '+' eta '/'.

Adibidez, hiru byteak 155, 162 eta 233 dira, dagokion (eta beldurgarria) bit-korrontean 100110111010001011101001, 6 biteko 38, 58, 11 eta 41 bitarteko balioei dagokienez.

Zenbaki hauek ASCII karaktere bihurtzen dira bigarren urratsean Base64 kodeketan. Gure adibidearen 6 biteko balioak "m6Lp" ASCII sekuentzira itzultzen dira.

Bi urratseko prozesu hau kodetzen duten byteen sekuentzia osoa aplikatuko da. Kodetutako datuak modu egokian inprimatu eta posta zerbitzariaren lerroaren luzera gainditzen ez dutenak, karaktere berriak sartu behar dira 76 karaktere baino gutxiagoko lerroko luzerak mantentzeko. Newline karaktereak datu guztiak bezala kodetuta daude.

Endgame konpontzeko

Kodekatze prozesuaren amaieran, arazoren bat egon liteke. Byteetako datu originalen tamaina hirukoiztuna bada, dena ondo funtzionatzen du. Ez bada, azkenean 8 biteko edo byte bat edo bi izan ditzakegu. Kodetze egokirako, hiru byte behar ditugu, ordea.

Irtenbidea byte nahasketak "0" balioarekin gehitzea da, 3 byte taldea sortzeko. Bi balio horiek eransten badira datuen byte gehigarri bat badago, bi gehigarri gehituko zaizkio.

Jakina, '0' amaierako artifizial hauek ezin dira kodetu beheko kodeketa-taulan. 65. karaktere baten bidez irudikatu behar dira.

Base64 padding karakterea '=' da. Jakina, datu kodearen amaieran bakarrik agertu daiteke.

Base64 Kodeketa Taula

Balio char Balio char Balio char Balio 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 n 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 /