Funções de Hash

O módulo hash calcula hashes criptográficos, valores HMAC, chaves derivadas com PBKDF2 e hashes FNV-1 não criptográficos. Esta página é uma referência de API com chamadas isoladas. Entradas literais ilustram o uso bem-sucedido; quando dados, secrets, senhas ou salts vierem da aplicação, capture e trate o segundo retorno error documentado antes de usar o resultado.

Hash não é criptografia e não oculta entradas de baixa entropia. Não registre senhas, chaves HMAC, chaves derivadas ou digests brutos dependentes de secrets. Use HMAC-SHA256 ou HMAC-SHA512 em novos projetos de autenticação de mensagens e PBKDF2 com um salt aleatório exclusivo para verificadores de senha.

Carregamento

local hash = require("hash")

Hashes Criptograficos

MD5

MD5 não é resistente a colisões. Use-o apenas por compatibilidade com protocolos que exigem MD5, não para decisões de segurança.

local hex = hash.md5("data")
local raw = hash.md5("data", true)
Parâmetro Tipo Descrição
data string Dados para hash
raw boolean? Retornar bytes raw ao inves de hex

Retorna: string, error

SHA-1

SHA-1 não é resistente a colisões. Use-o apenas por compatibilidade com protocolos que exigem SHA-1, não para decisões de segurança.

local hex = hash.sha1("data")
local raw = hash.sha1("data", true)
Parâmetro Tipo Descrição
data string Dados para hash
raw boolean? Retornar bytes raw ao inves de hex

Retorna: string, error

SHA-256

local hex = hash.sha256("data")
local raw = hash.sha256("data", true)
Parâmetro Tipo Descrição
data string Dados para hash
raw boolean? Retornar bytes raw ao inves de hex

Retorna: string, error

SHA-512

local hex = hash.sha512("data")
local raw = hash.sha512("data", true)
Parâmetro Tipo Descrição
data string Dados para hash
raw boolean? Retornar bytes raw ao inves de hex

Retorna: string, error

HMACs

HMAC-MD5

Use HMAC-MD5 apenas por compatibilidade com protocolos que o exigem; prefira HMAC-SHA256 ou HMAC-SHA512 em novos projetos.

local hex = hash.hmac_md5("message", "secret")
local raw = hash.hmac_md5("message", "secret", true)
Parâmetro Tipo Descrição
data string Mensagem para autenticar
secret string Chave secreta
raw boolean? Retornar bytes raw ao inves de hex

Retorna: string, error

HMAC-SHA1

Use HMAC-SHA1 apenas por compatibilidade com protocolos que o exigem; prefira HMAC-SHA256 ou HMAC-SHA512 em novos projetos.

local hex = hash.hmac_sha1("message", "secret")
local raw = hash.hmac_sha1("message", "secret", true)
Parâmetro Tipo Descrição
data string Mensagem para autenticar
secret string Chave secreta
raw boolean? Retornar bytes raw ao inves de hex

Retorna: string, error

HMAC-SHA256

local hex = hash.hmac_sha256("message", "secret")
local raw = hash.hmac_sha256("message", "secret", true)
Parâmetro Tipo Descrição
data string Mensagem para autenticar
secret string Chave secreta
raw boolean? Retornar bytes raw ao inves de hex

Retorna: string, error

HMAC-SHA512

local hex = hash.hmac_sha512("message", "secret")
local raw = hash.hmac_sha512("message", "secret", true)
Parâmetro Tipo Descrição
data string Mensagem para autenticar
secret string Chave secreta
raw boolean? Retornar bytes raw ao inves de hex

Retorna: string, error

Hashes Não-Criptograficos

FNV-1 de 32 bits

Hash rapido para hash tables e particionamento.

local n = hash.fnv32("data")
Parâmetro Tipo Descrição
data string Dados para hash

Retorna: number, error

FNV-1 de 64 bits

Hash rapido com saida maior para menos colisoes.

local n = hash.fnv64("data")
Parâmetro Tipo Descrição
data string Dados para hash

Retorna: number, error

Derivação de Chave

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 Descrição
password string Senha/passphrase (não vazia)
salt string Valor do salt (não vazio)
iterations integer Quantidade de iterações (1 a 10.000.000)
key_length integer Comprimento desejado da chave em bytes
hash string? sha256 ou sha512 (padrão: sha256)

Retorna: string, error (bytes brutos da chave)

Erros

Condição Tipo Retentável
Input não e string errors.INVALID não
Secret não e string (HMAC) errors.INVALID não
Senha/salt vazios, iterações não positivas ou excessivas, hash não suportado (PBKDF2) errors.INVALID não

Veja Tratamento de Erros para trabalhar com erros.