Hash-Funktionen
Das Modul hash berechnet kryptografische Hashes, HMAC-Werte, mit PBKDF2 abgeleitete Schlüssel und nicht kryptografische FNV-1-Hashes. Diese Seite ist eine API-Referenz mit einzelnen Aufrufen. Literale Eingaben veranschaulichen erfolgreiche Verwendung; wenn Daten, Geheimnisse, Passwörter oder Salts aus der Anwendung stammen, behandeln Sie den dokumentierten zweiten Rückgabewert error, bevor Sie das Ergebnis verwenden.
Ein Hash ist keine Verschlüsselung und verbirgt keine Eingaben mit geringer Entropie. Protokollieren Sie keine Passwörter, HMAC-Schlüssel, abgeleiteten Schlüssel oder rohen, geheimnisabhängigen Digests. Verwenden Sie HMAC-SHA256 oder HMAC-SHA512 für neue Nachrichtenauthentifizierungsverfahren und PBKDF2 mit einem eindeutigen zufälligen Salt für Passwortprüfwerte.
Laden
local hash = require("hash")
Kryptografische Hashes
MD5
MD5 ist nicht kollisionsresistent. Verwenden Sie es nur zur Kompatibilität mit Protokollen, die MD5 verlangen, und nicht für Sicherheitsentscheidungen.
local hex = hash.md5("data")
local raw = hash.md5("data", true)
| Parameter | Typ | Beschreibung |
|---|---|---|
data |
string | Zu hashende Daten |
raw |
boolean? | Rohe Bytes statt Hex zurückgeben |
Gibt zurück: string, error
SHA-1
SHA-1 ist nicht kollisionsresistent. Verwenden Sie es nur zur Kompatibilität mit Protokollen, die SHA-1 verlangen, und nicht für Sicherheitsentscheidungen.
local hex = hash.sha1("data")
local raw = hash.sha1("data", true)
| Parameter | Typ | Beschreibung |
|---|---|---|
data |
string | Zu hashende Daten |
raw |
boolean? | Rohe Bytes statt Hex zurückgeben |
Gibt zurück: string, error
SHA-256
local hex = hash.sha256("data")
local raw = hash.sha256("data", true)
| Parameter | Typ | Beschreibung |
|---|---|---|
data |
string | Zu hashende Daten |
raw |
boolean? | Rohe Bytes statt Hex zurückgeben |
Gibt zurück: string, error
SHA-512
local hex = hash.sha512("data")
local raw = hash.sha512("data", true)
| Parameter | Typ | Beschreibung |
|---|---|---|
data |
string | Zu hashende Daten |
raw |
boolean? | Rohe Bytes statt Hex zurückgeben |
Gibt zurück: string, error
HMACs
HMAC-MD5
Verwenden Sie HMAC-MD5 nur zur Kompatibilität mit einem Protokoll, das es verlangt; bevorzugen Sie für neue Verfahren HMAC-SHA256 oder HMAC-SHA512.
local hex = hash.hmac_md5("message", "secret")
local raw = hash.hmac_md5("message", "secret", true)
| Parameter | Typ | Beschreibung |
|---|---|---|
data |
string | Zu authentifizierende Nachricht |
secret |
string | Geheimer Schlüssel |
raw |
boolean? | Rohe Bytes statt Hex zurückgeben |
Gibt zurück: string, error
HMAC-SHA1
Verwenden Sie HMAC-SHA1 nur zur Kompatibilität mit einem Protokoll, das es verlangt; bevorzugen Sie für neue Verfahren HMAC-SHA256 oder HMAC-SHA512.
local hex = hash.hmac_sha1("message", "secret")
local raw = hash.hmac_sha1("message", "secret", true)
| Parameter | Typ | Beschreibung |
|---|---|---|
data |
string | Zu authentifizierende Nachricht |
secret |
string | Geheimer Schlüssel |
raw |
boolean? | Rohe Bytes statt Hex zurückgeben |
Gibt zurück: string, error
HMAC-SHA256
local hex = hash.hmac_sha256("message", "secret")
local raw = hash.hmac_sha256("message", "secret", true)
| Parameter | Typ | Beschreibung |
|---|---|---|
data |
string | Zu authentifizierende Nachricht |
secret |
string | Geheimer Schlüssel |
raw |
boolean? | Rohe Bytes statt Hex zurückgeben |
Gibt zurück: string, error
HMAC-SHA512
local hex = hash.hmac_sha512("message", "secret")
local raw = hash.hmac_sha512("message", "secret", true)
| Parameter | Typ | Beschreibung |
|---|---|---|
data |
string | Zu authentifizierende Nachricht |
secret |
string | Geheimer Schlüssel |
raw |
boolean? | Rohe Bytes statt Hex zurückgeben |
Gibt zurück: string, error
Nicht-kryptografische Hashes
FNV-1 32 Bit
Berechnen Sie einen Hash für Anwendungen wie Hash-Tabellen und Partitionierung.
local n = hash.fnv32("data")
| Parameter | Typ | Beschreibung |
|---|---|---|
data |
string | Zu hashende Daten |
Gibt zurück: number, error
FNV-1 64 Bit
Berechnen Sie einen breiteren Hash für Anwendungen wie Hash-Tabellen und Partitionierung, um die Kollisionswahrscheinlichkeit zu verringern.
local n = hash.fnv64("data")
| Parameter | Typ | Beschreibung |
|---|---|---|
data |
string | Zu hashende Daten |
Gibt zurück: number, error
Schlüsselableitung
PBKDF2
local key, err = hash.pbkdf2(password, salt, iterations, key_length)
local key, err = hash.pbkdf2(password, salt, iterations, key_length, "sha512")
| Parameter | Typ | Beschreibung |
|---|---|---|
password |
string | Passwort/Passphrase (nicht leer) |
salt |
string | Salt-Wert (nicht leer) |
iterations |
integer | Anzahl der Iterationen (1 bis 10.000.000) |
key_length |
integer | Gewünschte Schlüssellänge in Bytes |
hash |
string? | sha256 oder sha512 (Standard: sha256) |
Gibt zurück: string, error (rohe Schlüsselbytes)
Fehler
| Bedingung | Art | Wiederholbar |
|---|---|---|
| Eingabe ist kein String | errors.INVALID |
nein |
| Secret ist kein String (HMAC) | errors.INVALID |
nein |
| Leeres Passwort/Salt, nicht positive oder zu hohe Iterationszahl, nicht unterstützter Hash (PBKDF2) | errors.INVALID |
nein |
Informationen zum Umgang mit Fehlern finden Sie unter Fehlerbehandlung.