Cómo funciona la codificación Base64
La codificación Base64 es el proceso de convertir datos binarios en formato de cadena ASCII al convertirlos en una representación de caracteres de 6 bits. El método de codificación Base64 se utiliza cuando se transmiten datos binarios, como imágenes o video, a través de un sistema diseñado para transmitir datos en formato de texto sin formato (ASCII).
¿Por qué usar la codificación Base64?
La necesidad de la codificación Base64 surge de los problemas relacionados con el transporte de medios en formato binario sin procesar a sistemas basados en texto.
Debido a que los sistemas basados en texto, como el correo electrónico, interpretan los datos binarios como una variedad de caracteres, incluidos los caracteres de comando especiales, estos sistemas malinterpretan gran parte de los datos binarios transmitidos al medio de transmisión y se pierden o dañan en tránsito.
Una forma de codificar dichos datos binarios de manera que evite tales problemas de transmisión es enviarlos como texto ASCII sin formato en formato codificado Base64. Esta es una de las técnicas utilizadas por el estándar MIME para enviar datos que no son de texto sin formato.
Muchos lenguajes de programación como PHP y Javascript incluyen funciones de codificación y decodificación Base64 para interpretar los datos transmitidos mediante la codificación Base64.
Lógica de codificación Base64
La codificación Base64 divide los datos binarios en segmentos completos de 3 bytes y 6 bits y los representa como caracteres imprimibles utilizando el estándar ASCII Básicamente se realiza en dos pasos.
El primer paso es dividir la cadena binaria en bloques de 6 bits. Base64 usa solo 6 bits (correspondientes a 2^6 = 64 caracteres) para garantizar que los datos codificados sean imprimibles y legibles por humanos. No se utilizan los caracteres especiales disponibles en ASCII.
64 caracteres (de ahí el nombre Base64) son 10 números, 26 letras minúsculas, 26 letras mayúsculas, más un signo más (+) y una barra inclinada (/). También hay un carácter 65 llamado Pad, el signo igual (=). Este carácter se utiliza cuando el último segmento de datos binarios no contiene los 6 bits completos.
Ejemplo de codificación Base64
Por ejemplo, tome los tres números ASCII 155, 162 y 233. Estos tres números forman el flujo binario de 100110111010001011101001. Los archivos binarios, como las imágenes, contienen flujos binarios de decenas o cientos de miles de ceros y unos.
El codificador Base64 primero divide el flujo binario en grupos de seis caracteres: 100110 111010 001011 101001. Cada grupo se convierte en los números 38, 58, 11 y 41.
Una secuencia binaria de seis caracteres convierte un carácter binario (o base 2) en un carácter decimal (base 10) elevando al cuadrado cada valor representado por un 1 en la cadena binaria por el cuadrado de su posición. Comenzando por la derecha y moviéndose hacia la izquierda, comenzando en cero, los valores en el flujo binario representan 2^0, luego 2^1, luego 2^2, luego 2^3, luego 2^4, luego 2^5.
Aquí hay otra forma de verlo. Comenzando desde la izquierda, los valores para cada posición son 1, 2, 4, 8, 16 y 32. Si el número binario tiene un 1 en la ranura, agregue el valor, si la ranura tiene un 0, este es no es el caso. La cadena binaria 100110 se convierte al número decimal 38: 0*2^01 + 1*2^1 + 1*2^2 + 0*2^3 + 0*2^4 + 1*2^5 = 0+ 2 +4+0+0+32.
La codificación Base64 toma esta cadena binaria y la divide en valores de 6 bits 38, 58, 11 y 41.
Finalmente, convierta estos números a caracteres ASCII utilizando la tabla de codificación Base64. El valor de 6 bits en este ejemplo se traduce a una cadena de caracteres ASCII m6LP.
Utilice la tabla de conversión Base64:
- 38 son metros
- 58 es 6
- 11 es L
- 41 es p
Este proceso de dos pasos funciona para toda la cadena binaria codificada.
Para asegurarse de que los datos cifrados se impriman correctamente y no excedan el límite de longitud de línea de un servidor de correo, inserte nuevos caracteres de línea para mantener la longitud de línea por debajo de 76 caracteres. Los saltos de línea se codifican como cualquier otro dato.
El propósito completo de la codificación Base64, desde agregar relleno para preservar el segmento binario de 3 bytes hasta convertir datos binarios en texto usando una tabla Base64, es preservar la integridad de la información binaria transmitida.
Tabla de codificación Base64
La siguiente tabla traduce los 64 caracteres utilizados en la codificación Base64.
Tabla de codificación Base64 | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
Valor | personaje | Valor | personaje | Valor | personaje | Valor | personaje | |||
0 | A | dieciséis | El | 32 | gramos | 48 | w | |||
1 | B. | 17 | R | 33 | H | 49 | X | |||
dos | C | 18 | Sí | 3.4 | Sí | Cincuenta | Sí | |||
3 | D | 19 | tonelada | 35 | j | 51 | p.ej | |||
4 | I | veinte | Ser | 36 | Qué | 52 | 0 | |||
5 | F | veintiuno | v | 37 | I | 53 | 1 | |||
6 | gramos | Veintidós | W | 38 | metro | 54 | dos | |||
7 | H | 23 | X | 39 | norte | 55 | 3 | |||
8 | I | veinticuatro | Sí | 40 | todo | 56 | 4 | |||
9 | j | 25 | p.ej | 41 | PAG | 57 | 5 | |||
10 | Qué | 26 | A | 42 | El | 58 | 6 | |||
once | grande | 27 | B | 43 | Correcto | 59 | 7 | |||
12 | metro | 28 | C | 44 | Sí | 60 | 8 | |||
13 | norte | 29 | Eso significa | cuarenta y cinco | ella | 61 | 9 | |||
14 | todo | 30 | I | 46 | Ser | 62 | + | |||
quince | adaptar | 31 | F | 47 | v | 63 | / |
Resolver el final del juego
Pueden surgir problemas al final del proceso de codificación. Si el tamaño de los datos originales (en bytes) es un múltiplo de tres, todo funciona bien. Si no, los bytes nulos pueden estar presentes. La codificación adecuada requiere exactamente 3 bytes de datos binarios.
La solución es agregar suficientes bytes con un valor de 0 para crear una matriz de 3 bytes. Si los datos requieren bytes de datos adicionales, agregue dos de esos valores agregando dos bytes adicionales.
Por supuesto, estos ceros artificiales finales no se pueden codificar utilizando la tabla de codificación a continuación. Deben estar representados por 65 caracteres. El carácter de relleno Base64 es el signo igual (=) al final de los datos codificados.
Deja una respuesta
Entradas relacionados