Хеш-функции
Криптографические хеш-функции и аутентификация сообщений HMAC.
Подключение
local hash = require("hash")
Криптографические хеши
MD5
local hex = hash.md5("data")
local raw = hash.md5("data", true)
| Параметр | Тип | Описание |
|---|---|---|
data |
string | Данные для хеширования |
raw |
boolean? | Вернуть сырые байты вместо hex |
Возвращает: string, error
SHA-1
local hex = hash.sha1("data")
local raw = hash.sha1("data", true)
| Параметр | Тип | Описание |
|---|---|---|
data |
string | Данные для хеширования |
raw |
boolean? | Вернуть сырые байты вместо hex |
Возвращает: string, error
SHA-256
local hex = hash.sha256("data")
local raw = hash.sha256("data", true)
| Параметр | Тип | Описание |
|---|---|---|
data |
string | Данные для хеширования |
raw |
boolean? | Вернуть сырые байты вместо hex |
Возвращает: string, error
SHA-512
local hex = hash.sha512("data")
local raw = hash.sha512("data", true)
| Параметр | Тип | Описание |
|---|---|---|
data |
string | Данные для хеширования |
raw |
boolean? | Вернуть сырые байты вместо hex |
Возвращает: string, error
Аутентификация HMAC
HMAC-MD5
local hex = hash.hmac_md5("message", "secret")
local raw = hash.hmac_md5("message", "secret", true)
| Параметр | Тип | Описание |
|---|---|---|
data |
string | Сообщение для аутентификации |
secret |
string | Секретный ключ |
raw |
boolean? | Вернуть сырые байты вместо hex |
Возвращает: string, error
HMAC-SHA1
local hex = hash.hmac_sha1("message", "secret")
local raw = hash.hmac_sha1("message", "secret", true)
| Параметр | Тип | Описание |
|---|---|---|
data |
string | Сообщение для аутентификации |
secret |
string | Секретный ключ |
raw |
boolean? | Вернуть сырые байты вместо hex |
Возвращает: string, error
HMAC-SHA256
local hex = hash.hmac_sha256("message", "secret")
local raw = hash.hmac_sha256("message", "secret", true)
| Параметр | Тип | Описание |
|---|---|---|
data |
string | Сообщение для аутентификации |
secret |
string | Секретный ключ |
raw |
boolean? | Вернуть сырые байты вместо hex |
Возвращает: string, error
HMAC-SHA512
local hex = hash.hmac_sha512("message", "secret")
local raw = hash.hmac_sha512("message", "secret", true)
| Параметр | Тип | Описание |
|---|---|---|
data |
string | Сообщение для аутентификации |
secret |
string | Секретный ключ |
raw |
boolean? | Вернуть сырые байты вместо hex |
Возвращает: string, error
Некриптографические хеши
FNV-32
Быстрый хеш для хеш-таблиц и партиционирования:
local n = hash.fnv32("data")
| Параметр | Тип | Описание |
|---|---|---|
data |
string | Данные для хеширования |
Возвращает: number, error
FNV-64
Быстрый хеш с большим выходом для меньшего числа коллизий:
local n = hash.fnv64("data")
| Параметр | Тип | Описание |
|---|---|---|
data |
string | Данные для хеширования |
Возвращает: number, error
Вывод ключей
PBKDF2
local key, err = hash.pbkdf2(password, salt, iterations, key_length)
local key, err = hash.pbkdf2(password, salt, iterations, key_length, "sha512")
| Параметр | Тип | Описание |
|---|---|---|
password |
string | Пароль/парольная фраза (непустая) |
salt |
string | Значение соли (непустое) |
iterations |
integer | Число итераций (от 1 до 10 000 000) |
key_length |
integer | Требуемая длина ключа в байтах |
hash |
string? | sha256 или sha512 (по умолчанию: sha256) |
Возвращает: string, error (сырые байты ключа)
Ошибки
| Ситуация | Тип | Повтор |
|---|---|---|
| Вход не является строкой | errors.INVALID |
нет |
| Секрет не является строкой (HMAC) | errors.INVALID |
нет |
| Пустой пароль/соль, неположительное или чрезмерное число итераций, неподдерживаемый хеш (PBKDF2) | errors.INVALID |
нет |
Подробнее см. Обработка ошибок.