Como funciona Coding Encoding

Se a internet é a estrada de información, entón o camiño para o correo electrónico é un barranco estreito. Só se poden pasar carretas moi pequenas.

O sistema de transporte de correo electrónico está deseñado só para texto plano ASCII. Intentar enviar texto noutros idiomas ou arquivos arbitrarios é como conseguir un camión a través do barranco.

¿Como atravesa a Barranca o gran camión?

Entón, como mandas un camión grande a través dun pequeno barranco? Ten que levalo a pedazos nun extremo, transportar as pezas polo barranco e reconstruír o camión das pezas do outro extremo.

O mesmo ocorre cando envía un ficheiro adjunto a través do correo electrónico . Nun proceso coñecido como codificación os datos binarios transfórmase ao texto ASCII, que se pode transportar no correo electrónico sen problemas. No final do destinatario, os datos descodificados e reconstruír o ficheiro orixinal.

Un método de codificación de datos arbitrarios como texto ASCII simple é Base64. É unha das técnicas empregadas polo estándar MIME para enviar datos que non sexan textos simples .

Base64 ao rescate

A codificación Base64 leva tres bytes, cada un que consta de oito bits, e representa-los como catro caracteres imprimibles no estándar ASCII. Faino en esencialmente dous pasos.

O primeiro paso é converter tres bytes a catro números de seis bits. Cada carácter do estándar ASCII consta de sete bits. Base64 só usa 6 bits (correspondente a 2 ^ 6 = 64 caracteres) para asegurar que os datos codificados sexan impresos e lexíbeis de maneira humana. Non se utilizan ningún dos caracteres especiais dispoñibles en ASCII.

Os 64 caracteres (de aí o nome Base64) son 10 díxitos, 26 caracteres en minúsculas, 26 caracteres en maiúscula, así como '+' e '/'.

Se por exemplo, os tres bytes son 155, 162 e 233, o fluxo de bits correspondente (e asustado) é 100110111010001011101001, que á súa vez corresponde aos valores de 6 bits 38, 58, 11 e 41.

Estes números transfórmanse a caracteres ASCII no segundo paso usando a táboa de codificación Base64. Os valores de 6 bits do noso exemplo traducen á secuencia ASCII "m6Lp".

Este proceso de dous etapas aplícase a toda a secuencia de bytes codificados. Para asegurar que os datos codificados poidan ser impresos correctamente e non excedan o límite de lonxitude da liña de correo, engádense novos caracteres para manter as lonxitudes de liña por baixo de 76 caracteres. Os caracteres da nova liña están codificados como todos os demais datos.

Resolvendo o xogo final

Ao final do proceso de codificación, poderiamos ter un problema. Se o tamaño dos datos orixinais en bytes é múltiplo de tres, todo funciona ben. Se non o é, podemos acabar cun ou dous bytes de 8 bits. Para a codificación correcta, necesitamos exactamente tres bytes, con todo.

A solución é engadir bytes suficientes cun valor de '0' para crear un grupo de 3 bytes. Dous valores semellantes engádense se temos un byte adicional de datos, un engádese por dous bytes adicionais.

Por suposto, estes finais artificiais '0' non poden ser codificados usando a táboa de codificación a continuación. Deben estar representados por un personaxe 65.

O carácter de carga de Base64 é '='. Por suposto, só pode aparecer ao final dos datos codificados.

Mesa de codificación 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 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 /