Funciones hash
El módulo hash calcula hashes criptográficos, valores HMAC, claves derivadas mediante PBKDF2 y hashes FNV-1 no criptográficos. Esta página es una referencia de API de llamadas aisladas. Las entradas literales ilustran usos correctos; cuando los datos, secretos, contraseñas o sales procedan de la aplicación, captura y maneja el segundo retorno error documentado antes de consumir el resultado.
Un hash no es cifrado y no oculta entradas de baja entropía. No registres contraseñas, claves HMAC, claves derivadas ni resúmenes sin procesar que dependan de secretos. Usa HMAC-SHA256 o HMAC-SHA512 para nuevos diseños de autenticación de mensajes y PBKDF2 con una sal aleatoria única para verificadores de contraseñas.
Carga
local hash = require("hash")
Hashes criptográficos
MD5
MD5 no es resistente a colisiones. Úsalo solo por compatibilidad con protocolos que requieran MD5, no para tomar decisiones de seguridad.
local hex = hash.md5("data")
local raw = hash.md5("data", true)
| Parámetro | Tipo | Descripción |
|---|---|---|
data |
string | Datos a hashear |
raw |
boolean? | Devolver bytes crudos en lugar de hex |
Devuelve: string, error
SHA-1
SHA-1 no es resistente a colisiones. Úsalo solo por compatibilidad con protocolos que requieran SHA-1, no para tomar decisiones de seguridad.
local hex = hash.sha1("data")
local raw = hash.sha1("data", true)
| Parámetro | Tipo | Descripción |
|---|---|---|
data |
string | Datos a hashear |
raw |
boolean? | Devolver bytes crudos en lugar de hex |
Devuelve: string, error
SHA-256
local hex = hash.sha256("data")
local raw = hash.sha256("data", true)
| Parámetro | Tipo | Descripción |
|---|---|---|
data |
string | Datos a hashear |
raw |
boolean? | Devolver bytes crudos en lugar de hex |
Devuelve: string, error
SHA-512
local hex = hash.sha512("data")
local raw = hash.sha512("data", true)
| Parámetro | Tipo | Descripción |
|---|---|---|
data |
string | Datos a hashear |
raw |
boolean? | Devolver bytes crudos en lugar de hex |
Devuelve: string, error
HMAC
HMAC-MD5
Usa HMAC-MD5 solo por compatibilidad con un protocolo que lo requiera; prefiere HMAC-SHA256 o HMAC-SHA512 para nuevos diseños.
local hex = hash.hmac_md5("message", "secret")
local raw = hash.hmac_md5("message", "secret", true)
| Parámetro | Tipo | Descripción |
|---|---|---|
data |
string | Mensaje a autenticar |
secret |
string | Clave secreta |
raw |
boolean? | Devolver bytes crudos en lugar de hex |
Devuelve: string, error
HMAC-SHA1
Usa HMAC-SHA1 solo por compatibilidad con un protocolo que lo requiera; prefiere HMAC-SHA256 o HMAC-SHA512 para nuevos diseños.
local hex = hash.hmac_sha1("message", "secret")
local raw = hash.hmac_sha1("message", "secret", true)
| Parámetro | Tipo | Descripción |
|---|---|---|
data |
string | Mensaje a autenticar |
secret |
string | Clave secreta |
raw |
boolean? | Devolver bytes crudos en lugar de hex |
Devuelve: string, error
HMAC-SHA256
local hex = hash.hmac_sha256("message", "secret")
local raw = hash.hmac_sha256("message", "secret", true)
| Parámetro | Tipo | Descripción |
|---|---|---|
data |
string | Mensaje a autenticar |
secret |
string | Clave secreta |
raw |
boolean? | Devolver bytes crudos en lugar de hex |
Devuelve: string, error
HMAC-SHA512
local hex = hash.hmac_sha512("message", "secret")
local raw = hash.hmac_sha512("message", "secret", true)
| Parámetro | Tipo | Descripción |
|---|---|---|
data |
string | Mensaje a autenticar |
secret |
string | Clave secreta |
raw |
boolean? | Devolver bytes crudos en lugar de hex |
Devuelve: string, error
Hashes no criptográficos
FNV-1 de 32 bits
Calcula un hash para usos como tablas hash y particionamiento.
local n = hash.fnv32("data")
| Parámetro | Tipo | Descripción |
|---|---|---|
data |
string | Datos a hashear |
Devuelve: number, error
FNV-1 de 64 bits
Calcula un hash más ancho para usos como tablas hash y particionamiento, lo que reduce la probabilidad de colisiones.
local n = hash.fnv64("data")
| Parámetro | Tipo | Descripción |
|---|---|---|
data |
string | Datos a hashear |
Devuelve: number, error
Derivacion de Claves
PBKDF2
local key, err = hash.pbkdf2(password, salt, iterations, key_length)
local key, err = hash.pbkdf2(password, salt, iterations, key_length, "sha512")
| Parámetro | Tipo | Descripción |
|---|---|---|
password |
string | Contraseña/frase de paso (no vacía) |
salt |
string | Valor de salt (no vacío) |
iterations |
integer | Cantidad de iteraciones (1 a 10.000.000) |
key_length |
integer | Longitud deseada de la clave en bytes |
hash |
string? | sha256 o sha512 (predeterminado: sha256) |
Devuelve: string, error (bytes crudos de la clave)
Errores
| Condición | Tipo | Reintentable |
|---|---|---|
| Entrada no es string | errors.INVALID |
no |
| Secreto no es string (HMAC) | errors.INVALID |
no |
| Contraseña/salt vacíos, iteraciones no positivas o excesivas, hash no soportado (PBKDF2) | errors.INVALID |
no |
Consulta Manejo de errores para trabajar con errores.