Cum funcționează codarea Base64

În cazul în care internetul este autostrada de informații, atunci calea pentru e-mail este o rară îngustă. Numai cărucioarele foarte mici pot trece.

Sistemul de transport al e-mailului este proiectat numai pentru text simplu ASCII. Încercarea de a trimite text în alte limbi sau în alte fișiere arbitrare este ca și cum ați obține un camion prin râpă.

Cum merge Big Truckul prin Ravin?

Atunci cum trimiți un camion mare printr-o mică răscoală? Trebuie să o luați în bucăți pe un capăt, să transportați piesele prin râpă și să reconstruiți camionul de la piesele de la celălalt capăt.

Același lucru se întâmplă atunci când trimiteți un fișier atașat prin e-mail . Într-un proces cunoscut sub numele de codificare a datelor binare este transformat în text ASCII, care poate fi transportat în e-mail fără probleme. La sfârșitul destinatarului, datele sunt decodate și fișierul original este reconstruit.

O metodă de codare a datelor arbitrare ca text simplu ASCII este Base64. Este una dintre tehnicile folosite de standardul MIME de a trimite alte date decât textul simplu .

Base64 la salvare

Codarea Base64 are trei octeți, fiecare constând din opt biți, și le reprezintă patru caractere imprimabile în standardul ASCII. Ea face acest lucru în esență două etape.

Primul pas este de a converti trei octeți la patru numere de șase biți. Fiecare caracter din standardul ASCII este compus din șapte biți. Base64 folosește numai 6 biți (corespunzând la 2 ^ 6 = 64 de caractere) pentru a asigura că datele codificate pot fi tipărite și citite de oameni. Nu sunt folosite niciunul dintre caracterele speciale disponibile în ASCII.

Cele 64 de caractere (de aici și numele Base64) sunt 10 cifre, 26 caractere minuscule, 26 majuscule, precum și "+" și "/".

Dacă, de exemplu, cei trei octeți sunt 155, 162 și 233, fluxul de biți corespunzător (și înfricoșător) este 100110111010001011101001, care la rândul său corespunde valorilor pe 6 biți 38, 58, 11 și 41.

Aceste numere sunt convertite în caractere ASCII în al doilea pas folosind tabela de codare Base64. Valorile pe 6 biți ale exemplului nostru se traduc la secvența ASCII "m6Lp".

Acest proces în două etape se aplică întregii secvențe de octeți care sunt codificați. Pentru a vă asigura că datele codificate pot fi tipărite corespunzător și nu depășesc limita de lungime a liniei serverului de mail, sunt inserate caractere de linie nouă pentru a păstra lungimile liniei mai mici de 76 de caractere. Caracterele de linie nouă sunt codificate ca toate celelalte date.

Rezolvarea Endgame

La sfârșitul procesului de codificare, s-ar putea să intrăm într-o problemă. Dacă dimensiunea datelor originale în octeți este mai mare de trei, totul funcționează bine. Dacă nu, putem ajunge la unul sau doi octeți pe 8 biți. Pentru codare corectă, avem nevoie de exact trei octeți.

Soluția este de a adăuga suficienți octeți cu o valoare de "0" pentru a crea un grup de 3 octeți. Două astfel de valori sunt adăugate dacă avem un octet suplimentar de date, unul este adăugat pentru doi octeți suplimentari.

Desigur, aceste descoperiri artificiale "0" nu pot fi codificate utilizând tabelul de codare de mai jos. Ele trebuie reprezentate de un personaj de 65 de ani.

Caracterul de umplutură Base64 este '='. Firește, poate apărea vreodată la sfârșitul datelor codificate.

Base64 Codificare Tabel

Valoare mangal Valoare mangal Valoare mangal Valoare mangal
0 A 16 Q 32 g 48 w
1 B 17 R 33 h 49 X
2 C 18 S 34 eu 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 eu 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 /