¿Qué es la Codificación en Base64?
Lectura: 3 minutos
Tags:
Informática
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 | 0 | 1 | 0 | 0 | 0 | 1 | 1 | 0 | 0 | 1 | 1 | 1 | 0 | 0 | 1 | 0 | 0 | 1 | 1 | 0 | 0 | 1 | 0 | 1 |
Í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
Value | Char | Value | Char | Value | Char | Value | 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 | = |