Ir al contenido

Cifrado y Firma

Operaciones criptograficas incluyendo cifrado, HMAC, JWT y derivacion de claves. Adaptado para workflows.

local crypto = require("crypto")
local bytes, err = crypto.random.bytes(32)
ParámetroTipoDescripción
lengthintegerNúmero de bytes (1 a 1,048,576)

Devuelve: string, error

local str, err = crypto.random.string(32)
local str, err = crypto.random.string(32, "0123456789abcdef")
ParámetroTipoDescripción
lengthintegerLongitud del string (1 a 1,048,576)
charsetstring?Caracteres a usar (predeterminado: alfanumerico)

Devuelve: string, error

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

Devuelve: string, error

local hex, err = crypto.hmac.sha256(key, data)
ParámetroTipoDescripción
keystringClave HMAC
datastringDatos a autenticar

Devuelve: string, error

local hex, err = crypto.hmac.sha512(key, data)
ParámetroTipoDescripción
keystringClave HMAC
datastringDatos a autenticar

Devuelve: string, error

local encrypted, err = crypto.encrypt.aes(data, key)
local encrypted, err = crypto.encrypt.aes(data, key, aad)
ParámetroTipoDescripción
datastringTexto plano a cifrar
keystring16, 24, o 32 bytes (AES-128/192/256)
aadstring?Datos autenticados adicionales

Devuelve: string, error (nonce prepuesto)

ChaCha20-Poly1305 {id=“encrypt-chacha20”}

Sección titulada «ChaCha20-Poly1305 {id=“encrypt-chacha20”}»
local encrypted, err = crypto.encrypt.chacha20(data, key)
local encrypted, err = crypto.encrypt.chacha20(data, key, aad)
ParámetroTipoDescripción
datastringTexto plano a cifrar
keystringDebe ser 32 bytes
aadstring?Datos autenticados adicionales

Devuelve: string, error

local plaintext, err = crypto.decrypt.aes(encrypted, key)
local plaintext, err = crypto.decrypt.aes(encrypted, key, aad)
ParámetroTipoDescripción
datastringDatos cifrados de encrypt.aes
keystringMisma clave usada para cifrado
aadstring?Debe coincidir con AAD usado en cifrado

Devuelve: string, error

ChaCha20-Poly1305 {id=“decrypt-chacha20”}

Sección titulada «ChaCha20-Poly1305 {id=“decrypt-chacha20”}»
local plaintext, err = crypto.decrypt.chacha20(encrypted, key)
local plaintext, err = crypto.decrypt.chacha20(encrypted, key, aad)
ParámetroTipoDescripción
datastringDatos cifrados de encrypt.chacha20
keystringMisma clave usada para cifrado
aadstring?Debe coincidir con AAD usado en cifrado

Devuelve: 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ámetroTipoDescripción
payloadtableClaims JWT (_header para cabecera personalizada)
keystringSecreto (HMAC) o clave privada PEM (RSA)
algstring?HS256, HS384, HS512, RS256 (predeterminado: HS256)

Devuelve: 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ámetroTipoDescripción
tokenstringToken JWT a verificar
keystringSecreto (HMAC) o clave publica PEM (RSA)
algstring?Algoritmo esperado (predeterminado: HS256)
require_expboolean?Validar expiracion (predeterminado: true)

Devuelve: table, error

local key, err = crypto.pbkdf2(password, salt, iterations, key_length)
local key, err = crypto.pbkdf2(password, salt, iterations, key_length, "sha512")
ParámetroTipoDescripción
passwordstringContrasena/frase de paso
saltstringValor de sal
iterationsintegerConteo de iteraciones (max 10,000,000)
key_lengthintegerLongitud de clave deseada en bytes
hashstring?sha256 o sha512 (predeterminado: sha256)

Devuelve: string, error

local equal = crypto.constant_time_compare(a, b)
ParámetroTipoDescripción
astringPrimer string
bstringSegundo string

Devuelve: boolean

CondiciónTipoReintentable
Longitud invalidaerrors.INVALIDno
Clave vaciaerrors.INVALIDno
Tamano de clave invalidoerrors.INVALIDno
Descifrado fallidoerrors.INTERNALno
Token expiradoerrors.INTERNALno

Consulte Manejo de Errores para trabajar con errores.