Codificação Base64

O módulo base64 codifica strings e dados binários usando o Base64 padrão da RFC 4648 e os decodifica novamente em bytes.

Esta é uma referência de API. Expressões que mostram apenas a saída representam valores de sucesso; os exemplos de sistema de arquivos e transporte verificam o segundo retorno opcional error antes de consumir os dados. Nomes como username, password, encoded_image e user_input são strings fornecidas pela aplicação.

Base64 é uma codificação, não criptografia nem autenticação. Não a use para ocultar segredos ou verificar se os dados foram alterados. Envie credenciais de autenticação Basic apenas por TLS e obtenha-as do armazenamento de segredos da aplicação, não de valores literais.

Carregamento

local base64 = require("base64")

Adicione base64 à lista modules: da entrada executável antes de importá-lo. Os exemplos de sistema de arquivos e JSON também exigem fs e json, respectivamente.

Codificação

encode

Codifica uma string, inclusive dados binários, como Base64.

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

-- Codificar dados binarios (ex: de arquivo)
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 Descrição
data string Dados a codificar (texto ou binário)

Retorna: string, error — uma entrada vazia retorna uma string vazia

Decodificação

decode

Decodifica uma string Base64 em seus bytes originais.

-- 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 um documento JSON envolvido em base64
local json = require("json")
local doc = json.decode(base64.decode(encoded_json))

O bloco final demonstra apenas o tratamento de delimitadores. Ele não analisa nem verifica um formato de token assinado.

Parâmetro Tipo Descrição
data string String codificada em Base64

Retorna: string, error — uma entrada vazia retorna uma string vazia

Erros

Condição Tipo Retentável
Entrada não é uma string errors.INVALID não
Caracteres Base64 inválidos errors.INVALID não
Padding corrompido errors.INVALID não

Veja Tratamento de Erros para trabalhar com erros.