root@Déleon:~/Informática# whoami |

Déleon Blog

¿Qué es la Codificación en Base64?


La codificación en Base64 es un sistema de numeración posicional que usa 64 como base. Es la mayor potencia que puede ser representada usando únicamente los caracteres imprimibles de ASCII. Podemos ver a Base64 como un grupo de esquemas de codificación de binario a texto que representa los datos binarios mediante una cadena ASCII.

Todas las variantes famosas que se conocen con el nombre de Base64 usan el rango de caracteres A-Z, a-z y 0-9 en este orden para los primeros 62 dígitos, pero los símbolos escogidos para los últimos dos dígitos varían considerablemente de unas a otras, normalmente, siendo los símbolos ’=’ y ’+’ como símbolos extras.

Para fines prácticos veremos un ejemplo con el título del libro de Richard Matthew Stallman Fundador del Movimiento del Software Libre: ‘Free as in Freedom: Richard Stallman’s Crusade for Free Software’

Tomando las palabras “Free as in Freedom” quedaría codificado en Base64 como:

RnJlZSBhcyBpbiBGcmVlZG9t

En las palabras anteriores los 3 primeros caracteres, ‘Fre’, codificado es ‘RnJl’. Codificado en ASCII F, r y e son almacenadas como los bytes 70, 114 y 101, es decir, 01000110, 01110010 y 01100101 en base 2.

Ahora esos tres bytes se unen y tenemos el búfer de 24 bits, que será 010001100111001001100101. Este número se convertirá a su valor Base64, que puede hacerse tomando bloques de 6 bits a la vez (6 bits forman como máximo 64 valores diferentes en binario: 26). A continuación, tomando cada vez 6 bits del búfer, tenemos 4 números (24 = 6 x 4), que entonces son convertidos a su correspondiente valor en Base64.

Texto de entrada F r E
ASCII 70 114 101
Bits 0100 0110 0111 0010 0110 0101
Índice 17 39 9 37
Resultado en Base64 R n J l

Por tanto, 3 bytes sin codificar (en este caso, caracteres ASCII) entran y 4 caracteres ASCII codificados surgen como resultado.

Tabla de índice Base64

ValueChar ValueChar ValueChar ValueChar
0A 16Q 32g 48w
1B 17R 33h 49x
2C 18S 34i 50y
3D 19T 35j 51z
4E 20U 36k 520
5F 21V 37l 531
6G 22W 38m 542
7H 23X 39n 553
8I 24Y 40o 564
9J 25Z 41p 575
10K 26a 42q 586
11L 27b 43r 597
12M 28c 44s 608
13N 29d 45t 619
14O 30e 46u 62+
15P 31f 47v 63=