Base64
Cabecera
#include <encode/base64.h>
Funciones
uint32_t | b64_encoded_size (...) |
uint32_t | b64_decoded_size (...) |
uint32_t | b64_encode (...) |
uint32_t | b64_decode (...) |
String* | b64_encode_from_stm (...) |
String* | b64_encode_from_file (...) |
String* | b64_encode_from_data (...) |
String* | b64_encode_from_str (...) |
String* | b64_encode_from_cstr (...) |
Buffer* | b64_decode_from_str (...) |
Buffer* | b64_decode_from_data (...) |
Base64 es un sistema de codificación que convierte datos binarios (como imágenes o archivos) en una cadena de texto compuesta por caracteres ASCII seguros para transmisión y almacenamiento, especialmente en entornos que solo admiten texto (como correos electrónicos, URLs, JSON, XML). Como su nombre indica, se utilizan 64 símbolos para la codificación que son A-Z, a-z, 0-9 en este orden para los primeros 62 dígitos, más dos caracteres adicionales +/. El protocolo es relativamente sencillo y puede resumirse en:
- Divide los datos binarios en bloques de 3 bytes (24 bits).
- Cada bloque se divide en 4 grupos de 6 bits.
- Cada grupo de 6 bits se traduce a un carácter de los 64 permitidos.
- La codificación Base64 aumenta el tamaño de los datos en aproximadamente un 33%, ya que cada 3 bytes se convierten en 4 caracteres.
- Permite enviar y almacenar datos binarios en sistemas que solo aceptan texto plano.
- No cifra ni protege los datos, solo los representa de forma textual.
b64_encoded_size ()
Obtiene el número de bytes necesarios para codificar un bloque de memoria en formato base64.
uint32_t b64_encoded_size(const uint32_t data_size);
data_size | El tamaño del bloque original. |
Retorna
El tamaño base64.
b64_decoded_size ()
Obtiene el número de bytes necesarios para decodificar un bloque de memoria en formato base64.
uint32_t b64_decoded_size(const uint32_t data_size);
data_size | El tamaño del bloque codificado en base64. |
Retorna
El tamaño en bytes.
b64_encode ()
Codifica un bloque de memoria en base64.
uint32_t b64_encode(const byte_t *data, const uint32_t size, char_t *base64);
data | El bloque de datos. |
size | El tamaño del bloque. |
base64 | El búfer donde almacenar el resultado. |
Retorna
El tamaño en bytes.
Observaciones
El búfer base64
debe tener, al menos, el tamaño devuelto por b64_encoded_size.
b64_decode ()
Decodifica un bloque base64.
uint32_t b64_decode(const char_t *base64, const uint32_t size, byte_t *data);
base64 | El bloque base64. |
size | El tamaño del bloque. |
data | El búfer donde almacenar el resultado. |
Retorna
El tamaño en bytes.
Observaciones
El búfer data
debe tener, al menos, el tamaño devuelto por b64_decoded_size.
b64_encode_from_stm ()
Crea un base64 con el contenido de un stream de lectura.
String* b64_encode_from_stm(Stream *stm);
stm | Stream de lectura. |
Retorna
Cadena de texto en base64.
b64_encode_from_file ()
Crea un base64 con el contenido de un archivo.
String* b64_encode_from_file(const char_t *pathname, ferror_t *error);
pathname | Ruta del archivo. |
error | Código de error falla la apertura del archivo. Puede ser |
Retorna
Cadena de texto en base64.
Observaciones
Devolverá un string vacó (no NULL
) si no puede abrir el archivo.
b64_encode_from_data ()
Crea un base64 a partir de un búfer en memoria.
String* b64_encode_from_data(const byte_t *data, const uint32_t size);
data | Bloque de datos. |
size | Tamaño del bloque de datos. |
Retorna
Cadena de texto en base64.
b64_encode_from_str ()
Crea un base64 a partir de un String.
String* b64_encode_from_str(const String *str);
str | String. |
Retorna
Cadena de texto en base64.
b64_encode_from_cstr ()
Crea un base64 a partir de una cadena en C.
String* b64_encode_from_cstr(const char_t *str);
str | Cadena de texto en UTF8, terminada en carácter nulo ( |
Retorna
Cadena de texto en base64.
b64_decode_from_str ()
Decodifica un texto en base64.
Buffer* b64_decode_from_str(const String *base64);
base64 | Cadena de texto en base64. |
Retorna
Búfer con el resultado.
b64_decode_from_data ()
Decodifica un texto en base64.
Buffer* b64_decode_from_data(const byte_t *data, const uint32_t size);
data | Búfer de datos que contiene texto en base64. |
size | Tamaño en bytes de |
Retorna
Búfer con el resultado.