Com funciona la codificació Base64

Taula de continguts:

Com funciona la codificació Base64
Com funciona la codificació Base64
Anonim

La codificació Base64 és un procés de conversió de dades binàries a un format de cadena ASCII convertint aquestes dades binàries en una representació de caràcters de 6 bits. El mètode de codificació Base64 s'utilitza quan les dades binàries, com ara imatges o vídeo, es transmeten a través de sistemes dissenyats per transmetre dades en format de text sense format (ASCII).

Per què s'utilitza la codificació Base64?

La necessitat de la codificació Base64 prové dels problemes que es produeixen quan els mitjans es transmeten en format binari sense processar a sistemes basats en text.

Atès que els sistemes basats en text (com el correu electrònic) interpreten les dades binàries com una àmplia gamma de caràcters, inclosos els caràcters d'ordres especials, bona part de les dades binàries que es transmeten als mitjans de transferència són malinterpretades per aquests sistemes i es perden o es corrompen en el procés de transmissió.

Image
Image

Un mètode per codificar aquest tipus de dades binàries d'una manera que eviti aquests problemes de transmissió és enviar-les com a text ASCII sense format en format codificat Base64. Aquesta és una de les tècniques que utilitza l'estàndard MIME per enviar dades que no siguin text sense format.

Molts llenguatges de programació, com PHP i Javascript, inclouen funcions de codificació i descodificació Base64 per interpretar les dades transmeses mitjançant la codificació Base64.

Lògica de codificació Base64

La codificació Base64 divideix les dades binàries en segments de 6 bits de 3 bytes complets i les representa com a caràcters imprimibles en l'estàndard ASCII. Ho fa bàsicament en dos passos.

El primer pas és dividir la cadena binària en blocs de 6 bits. Base64 només utilitza 6 bits (corresponent a 2^6=64 caràcters) per garantir que les dades codificades siguin imprimibles i llegibles humanament. No s'utilitza cap dels caràcters especials disponibles en ASCII.

Els 64 caràcters (d'aquí el nom Base64) són de 10 dígits, 26 caràcters en minúscula, 26 caràcters en majúscules, així com el signe més (+) i la barra inclinada (/). També hi ha un caràcter 65 conegut com a coixinet, que és el signe igual (=). Aquest caràcter s'utilitza quan l'últim segment de dades binàries no conté 6 bits complets.

Exemple de codificació Base64

Per exemple, prengui tres nombres ASCII 155, 162 i 233. Aquests tres nombres constitueixen un flux binari de 100110111010001011101001. Un fitxer binari, com una imatge, conté un flux binari que s'executa per desenes o centenars de milers. i uns.

Un codificador Base64 comença dividint el flux binari en grups de sis caràcters: 100110 111010 001011 101001. Cadascun d'aquests agrupaments es tradueix als números 38, 58, 11 i 41.

Un flux binari de sis caràcters converteix entre caràcters binaris (o base 2) a decimals (base 10) quadrant cada valor representat per un 1 a la seqüència binària amb el seu quadrat de posició. Començant per la dreta i movent-nos cap a l'esquerra, i començant per zero, els valors del flux binari representen 2^0, després 2^1, després 2^2, després 2^3, després 2^4 i després 2^5.

Aquí hi ha una altra manera de mirar-ho. Començant per l'esquerra, cada posició val 1, 2, 4, 8, 16 i 32. Si el nombre binari té un 1 a la ranura, afegiu aquest valor; si té un 0 a la ranura, no. La cadena binària 100110 es converteix al número decimal 38: 02^01 + 12^1 + 12^2 + 02^3 + 02^4 + 12^5=0+2 +4+0+0+32.

La codificació Base64 pren aquesta cadena binària i la divideix en els valors de 6 bits 38, 58, 11 i 41.

Finalment, aquests números es converteixen en caràcters ASCII mitjançant la taula de codificació Base64. Els valors de 6 bits d'aquest exemple es tradueixen a la seqüència ASCII m6Lp.

Ús de la taula de conversions Base64:

  • 38 és m
  • 58 és 6
  • 11 és L
  • 41 és p

Aquest procés de dos passos s'aplica a tota la cadena binària que està codificada.

Per garantir que les dades codificades es puguin imprimir correctament i que no superin el límit de longitud de línia de cap servidor de correu, s'insereixen caràcters de nova línia per mantenir les longituds de línia inferiors als 76 caràcters. Els caràcters de nova línia estan codificats com totes les altres dades.

Tot el propòsit de la codificació Base64, des d'afegir farciment per preservar segments binaris de 3 bytes fins a convertir binari a text mitjançant la taula Base64, és preservar la integritat de la informació binària transmesa.

Taula de codificació Base64

La taula següent tradueix els 64 caràcters utilitzats en la codificació Base64.

Taula de codificació Base64
Valor Char Valor Char Valor Char Valor 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 /

Resolució del final del joc

Al final del procés de codificació, pot haver-hi un problema. Si la mida de les dades originals en bytes és múltiple de tres, tot funciona bé. Si no és així, pot haver-hi bytes buits. Per a una codificació adequada, calen exactament 3 bytes de dades binàries.

La solució és afegir suficients bytes amb un valor de 0 per crear un grup de 3 bytes. S'afegeixen dos d'aquests valors si les dades necessiten un byte addicional de dades, un per a dos bytes addicionals.

Per descomptat, aquests "0" artificials al final no es poden codificar mitjançant la taula de codificació següent. S'han de representar amb un caràcter 65è. El caràcter de farciment Base64 és el signe igual (=) i es col·loca al final de les dades codificades.

Recomanat: