Pular para o conteúdo

Criptografia & Assinatura

Operações criptograficas incluindo criptografia, HMAC, JWT e derivação de chaves. Adaptado para workflows.

local crypto = require("crypto")
local bytes, err = crypto.random.bytes(32)
ParâmetroTipoDescrição
lengthintegerNumero de bytes (1 a 1.048.576)

Retorna: string, error

local str, err = crypto.random.string(32)
local str, err = crypto.random.string(32, "0123456789abcdef")
ParâmetroTipoDescrição
lengthintegerTamanho da string (1 a 1.048.576)
charsetstring?Caracteres para usar (padrão: alfanumerico)

Retorna: string, error

local id, err = crypto.random.uuid()

Retorna: string, error

local hex, err = crypto.hmac.sha256(key, data)
ParâmetroTipoDescrição
keystringChave HMAC
datastringDados para autenticar

Retorna: string, error

local hex, err = crypto.hmac.sha512(key, data)
ParâmetroTipoDescrição
keystringChave HMAC
datastringDados para autenticar

Retorna: string, error

local encrypted, err = crypto.encrypt.aes(data, key)
local encrypted, err = crypto.encrypt.aes(data, key, aad)
ParâmetroTipoDescrição
datastringTexto plano para criptografar
keystring16, 24 ou 32 bytes (AES-128/192/256)
aadstring?Dados adicionais autenticados

Retorna: string, error (nonce prepended)

local encrypted, err = crypto.encrypt.chacha20(data, key)
local encrypted, err = crypto.encrypt.chacha20(data, key, aad)
ParâmetroTipoDescrição
datastringTexto plano para criptografar
keystringDeve ter 32 bytes
aadstring?Dados adicionais autenticados

Retorna: string, error

local plaintext, err = crypto.decrypt.aes(encrypted, key)
local plaintext, err = crypto.decrypt.aes(encrypted, key, aad)
ParâmetroTipoDescrição
datastringDados criptografados de encrypt.aes
keystringMesma chave usada na criptografia
aadstring?Deve coincidir com AAD usado na criptografia

Retorna: string, error

local plaintext, err = crypto.decrypt.chacha20(encrypted, key)
local plaintext, err = crypto.decrypt.chacha20(encrypted, key, aad)
ParâmetroTipoDescrição
datastringDados criptografados de encrypt.chacha20
keystringMesma chave usada na criptografia
aadstring?Deve coincidir com AAD usado na criptografia

Retorna: string, error

local token, err = crypto.jwt.encode(payload, secret)
local token, err = crypto.jwt.encode(payload, secret, "HS256")
local token, err = crypto.jwt.encode(payload, private_key_pem, "RS256")
ParâmetroTipoDescrição
payloadtableClaims JWT (_header para header customizado)
keystringSecret (HMAC) ou chave privada PEM (RSA)
algstring?HS256, HS384, HS512, RS256 (padrão: HS256)

Retorna: string, error

local claims, err = crypto.jwt.verify(token, secret)
local claims, err = crypto.jwt.verify(token, secret, "HS256", false)
local claims, err = crypto.jwt.verify(token, public_key_pem, "RS256")
ParâmetroTipoDescrição
tokenstringToken JWT para verificar
keystringSecret (HMAC) ou chave publica PEM (RSA)
algstring?Algoritmo esperado (padrão: HS256)
require_expboolean?Validar expiração (padrão: true)

Retorna: table, error

local key, err = crypto.pbkdf2(password, salt, iterations, key_length)
local key, err = crypto.pbkdf2(password, salt, iterations, key_length, "sha512")
ParâmetroTipoDescrição
passwordstringSenha/passphrase
saltstringValor de salt
iterationsintegerContagem de iteracoes (max 10.000.000)
key_lengthintegerTamanho desejado da chave em bytes
hashstring?sha256 ou sha512 (padrão: sha256)

Retorna: string, error

local equal = crypto.constant_time_compare(a, b)
ParâmetroTipoDescrição
astringPrimeira string
bstringSegunda string

Retorna: boolean

CondiçãoTipoRetentável
Tamanho inválidoerrors.INVALIDnão
Chave vaziaerrors.INVALIDnão
Tamanho de chave inválidoerrors.INVALIDnão
Descriptografia falhouerrors.INTERNALnão
Token expiradoerrors.INTERNALnão

Veja Error Handling para trabalhar com erros.