Verschlüsselung & Signierung
Kryptografische Operationen einschließlich Verschlüsselung, HMAC, JWT und Schlüsselableitung. Angepasst für Workflows.
Laden
local crypto = require("crypto")
Zufallsgenerierung
Zufallsbytes
local bytes, err = crypto.random.bytes(32)
| Parameter | Typ | Beschreibung |
|---|---|---|
length |
integer | Anzahl Bytes (1 bis 1.048.576) |
Gibt zurück: string, error
Zufallsstring
local str, err = crypto.random.string(32)
local str, err = crypto.random.string(32, "0123456789abcdef")
| Parameter | Typ | Beschreibung |
|---|---|---|
length |
integer | String-Länge (1 bis 1.048.576) |
charset |
string? | Zu verwendende Zeichen (Standard: alphanumerisch) |
Gibt zurück: string, error
Zufalls-UUID
local id, err = crypto.random.uuid()
Gibt zurück: string, error
HMAC
HMAC-SHA256
local hex, err = crypto.hmac.sha256(key, data)
| Parameter | Typ | Beschreibung |
|---|---|---|
key |
string | HMAC-Schlüssel |
data |
string | Zu authentifizierende Daten |
Gibt zurück: string, error
HMAC-SHA512
local hex, err = crypto.hmac.sha512(key, data)
| Parameter | Typ | Beschreibung |
|---|---|---|
key |
string | HMAC-Schlüssel |
data |
string | Zu authentifizierende Daten |
Gibt zurück: string, error
Verschlüsselung
AES-GCM {id="encrypt-aes-gcm"}
local encrypted, err = crypto.encrypt.aes(data, key)
local encrypted, err = crypto.encrypt.aes(data, key, aad)
| Parameter | Typ | Beschreibung |
|---|---|---|
data |
string | Zu verschlüsselnder Klartext |
key |
string | 16, 24 oder 32 Bytes (AES-128/192/256) |
aad |
string? | Zusätzliche authentifizierte Daten |
Gibt zurück: string, error (Nonce vorangestellt)
ChaCha20-Poly1305 {id="encrypt-chacha20"}
local encrypted, err = crypto.encrypt.chacha20(data, key)
local encrypted, err = crypto.encrypt.chacha20(data, key, aad)
| Parameter | Typ | Beschreibung |
|---|---|---|
data |
string | Zu verschlüsselnder Klartext |
key |
string | Muss 32 Bytes sein |
aad |
string? | Zusätzliche authentifizierte Daten |
Gibt zurück: string, error
Entschlüsselung
AES-GCM {id="decrypt-aes-gcm"}
local plaintext, err = crypto.decrypt.aes(encrypted, key)
local plaintext, err = crypto.decrypt.aes(encrypted, key, aad)
| Parameter | Typ | Beschreibung |
|---|---|---|
data |
string | Verschlüsselte Daten von encrypt.aes |
key |
string | Gleicher Schlüssel wie bei Verschlüsselung |
aad |
string? | Muss mit AAD bei Verschlüsselung übereinstimmen |
Gibt zurück: string, error
ChaCha20-Poly1305 {id="decrypt-chacha20"}
local plaintext, err = crypto.decrypt.chacha20(encrypted, key)
local plaintext, err = crypto.decrypt.chacha20(encrypted, key, aad)
| Parameter | Typ | Beschreibung |
|---|---|---|
data |
string | Verschlüsselte Daten von encrypt.chacha20 |
key |
string | Gleicher Schlüssel wie bei Verschlüsselung |
aad |
string? | Muss mit AAD bei Verschlüsselung übereinstimmen |
Gibt zurück: string, error
JWT
Kodieren
local token, err = crypto.jwt.encode(payload, secret)
local token, err = crypto.jwt.encode(payload, secret, "HS256")
local token, err = crypto.jwt.encode(payload, private_key_pem, "RS256")
| Parameter | Typ | Beschreibung |
|---|---|---|
payload |
table | JWT-Claims (_header für benutzerdefinierten Header) |
key |
string | Secret (HMAC) oder PEM-privater Schlüssel (RSA) |
alg |
string? | HS256, HS384, HS512, RS256 (Standard: HS256) |
Gibt zurück: string, error
Verifizieren
local claims, err = crypto.jwt.verify(token, secret)
local claims, err = crypto.jwt.verify(token, secret, "HS256", false)
local claims, err = crypto.jwt.verify(token, public_key_pem, "RS256")
| Parameter | Typ | Beschreibung |
|---|---|---|
token |
string | Zu verifizierender JWT-Token |
key |
string | Secret (HMAC) oder PEM-öffentlicher Schlüssel (RSA) |
alg |
string? | Erwarteter Algorithmus (Standard: HS256) |
require_exp |
boolean? | Ablauf validieren (Standard: true) |
Gibt zurück: table, error
Schlüsselableitung
PBKDF2
local key, err = crypto.pbkdf2(password, salt, iterations, key_length)
local key, err = crypto.pbkdf2(password, salt, iterations, key_length, "sha512")
| Parameter | Typ | Beschreibung |
|---|---|---|
password |
string | Passwort/Passphrase |
salt |
string | Salt-Wert |
iterations |
integer | Iterationsanzahl (max. 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
Hilfsfunktionen
Konstantzeit-Vergleich
local equal = crypto.constant_time_compare(a, b)
| Parameter | Typ | Beschreibung |
|---|---|---|
a |
string | Erster String |
b |
string | Zweiter String |
Gibt zurück: boolean
Fehler
| Bedingung | Art | Wiederholbar |
|---|---|---|
| Ungültige Länge | errors.INVALID |
nein |
| Leerer Schlüssel | errors.INVALID |
nein |
| Ungültige Schlüsselgröße | errors.INVALID |
nein |
| Entschlüsselung fehlgeschlagen | errors.INTERNAL |
nein |
| Token abgelaufen | errors.INTERNAL |
nein |
Siehe Fehlerbehandlung für die Arbeit mit Fehlern.