Codificación Base64

El módulo base64 codifica cadenas y datos binarios mediante Base64 estándar RFC 4648 y los decodifica de nuevo a bytes.

Esta es una referencia de API. Las expresiones que solo producen salida muestran valores correctos; los ejemplos de sistema de archivos y transporte comprueban el segundo valor opcional error antes de consumir los datos. Nombres como username, password, encoded_image y user_input son cadenas proporcionadas por la aplicación.

Base64 es una codificación, no un cifrado ni un mecanismo de autenticación. No lo uses para ocultar secretos ni para comprobar que los datos no se han modificado. Envía credenciales de autenticación Basic únicamente a través de TLS y obténlas del almacén de secretos de la aplicación, no de literales.

Carga

local base64 = require("base64")

Añade base64 a la lista modules: de la entrada ejecutable antes de requerirlo. Los ejemplos de sistema de archivos y JSON también requieren fs y json, respectivamente.

Codificación

encode

Codifica una cadena, incluidos los datos binarios, como Base64.

-- Encode text
local encoded, err = base64.encode("Hello, World!")
if err then return nil, err end
print(encoded)  -- "SGVsbG8sIFdvcmxkIQ=="

-- Codificar datos binarios (ej., desde archivo)
local image_data = fs.get("app:data"):readfile("photo.jpg")
local image_b64 = base64.encode(image_data)

-- Encode JSON for transport
local json = require("json")
local payload, json_err = json.encode({user = "alice", action = "login"})
if json_err then return nil, json_err end
local token_part, token_err = base64.encode(payload)
if token_err then return nil, token_err end

-- Encode credentials
local credentials, credentials_err = base64.encode(username .. ":" .. password)
if credentials_err then return nil, credentials_err end
local auth_header = "Basic " .. credentials
Parámetro Tipo Descripción
data string Datos a codificar (texto o binario)

Devuelve: string, error — una entrada vacía devuelve una cadena vacía

Decodificación

decode

Decodifica una cadena Base64 y recupera sus bytes originales.

-- Decode text
local decoded, decode_err = base64.decode("SGVsbG8sIFdvcmxkIQ==")
if decode_err then return nil, decode_err end
print(decoded)  -- "Hello, World!"

-- Decode with error handling
local data, err = base64.decode(user_input)
if err then
    return nil, errors.new("Invalid base64 data"):kind(errors.INVALID)
end

-- Decode binary data
local image_data, err = base64.decode(encoded_image)
if err then
    return nil, err
end
fs.get("app:data"):writefile("output.jpg", image_data)

-- Decodificar un documento JSON envuelto en base64
local json = require("json")
local doc = json.decode(base64.decode(encoded_json))

El bloque final solo muestra el manejo de delimitadores. No analiza ni verifica un formato de token firmado.

Parámetro Tipo Descripción
data string Cadena codificada en Base64

Devuelve: string, error — una entrada vacía devuelve una cadena vacía

Errores

Condición Clase Reintentable
La entrada no es una cadena errors.INVALID no
Caracteres Base64 no válidos errors.INVALID no
Padding corrupto errors.INVALID no

Consulta Manejo de errores para trabajar con errores.