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.