Zum Inhalt springen

Verschlüsselung & Signierung

Kryptografische Operationen einschließlich Verschlüsselung, HMAC, JWT und Schlüsselableitung. Angepasst für Workflows.

local crypto = require("crypto")
local bytes, err = crypto.random.bytes(32)
ParameterTypBeschreibung
lengthintegerAnzahl Bytes (1 bis 1.048.576)

Gibt zurück: string, error

local str, err = crypto.random.string(32)
local str, err = crypto.random.string(32, "0123456789abcdef")
ParameterTypBeschreibung
lengthintegerString-Länge (1 bis 1.048.576)
charsetstring?Zu verwendende Zeichen (Standard: alphanumerisch)

Gibt zurück: string, error

local id, err = crypto.random.uuid()

Gibt zurück: string, error

local hex, err = crypto.hmac.sha256(key, data)
ParameterTypBeschreibung
keystringHMAC-Schlüssel
datastringZu authentifizierende Daten

Gibt zurück: string, error

local hex, err = crypto.hmac.sha512(key, data)
ParameterTypBeschreibung
keystringHMAC-Schlüssel
datastringZu authentifizierende Daten

Gibt zurück: string, error

local encrypted, err = crypto.encrypt.aes(data, key)
local encrypted, err = crypto.encrypt.aes(data, key, aad)
ParameterTypBeschreibung
datastringZu verschlüsselnder Klartext
keystring16, 24 oder 32 Bytes (AES-128/192/256)
aadstring?Zusätzliche authentifizierte Daten

Gibt zurück: string, error (Nonce vorangestellt)

local encrypted, err = crypto.encrypt.chacha20(data, key)
local encrypted, err = crypto.encrypt.chacha20(data, key, aad)
ParameterTypBeschreibung
datastringZu verschlüsselnder Klartext
keystringMuss 32 Bytes sein
aadstring?Zusätzliche authentifizierte Daten

Gibt zurück: string, error

local plaintext, err = crypto.decrypt.aes(encrypted, key)
local plaintext, err = crypto.decrypt.aes(encrypted, key, aad)
ParameterTypBeschreibung
datastringVerschlüsselte Daten von encrypt.aes
keystringGleicher Schlüssel wie bei Verschlüsselung
aadstring?Muss mit AAD bei Verschlüsselung übereinstimmen

Gibt zurück: string, error

local plaintext, err = crypto.decrypt.chacha20(encrypted, key)
local plaintext, err = crypto.decrypt.chacha20(encrypted, key, aad)
ParameterTypBeschreibung
datastringVerschlüsselte Daten von encrypt.chacha20
keystringGleicher Schlüssel wie bei Verschlüsselung
aadstring?Muss mit AAD bei Verschlüsselung übereinstimmen

Gibt zurück: string, error

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")
ParameterTypBeschreibung
payloadtableJWT-Claims (_header für benutzerdefinierten Header)
keystringSecret (HMAC) oder PEM-privater Schlüssel (RSA)
algstring?HS256, HS384, HS512, RS256 (Standard: HS256)

Gibt zurück: string, error

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")
ParameterTypBeschreibung
tokenstringZu verifizierender JWT-Token
keystringSecret (HMAC) oder PEM-öffentlicher Schlüssel (RSA)
algstring?Erwarteter Algorithmus (Standard: HS256)
require_expboolean?Ablauf validieren (Standard: true)

Gibt zurück: table, error

local key, err = crypto.pbkdf2(password, salt, iterations, key_length)
local key, err = crypto.pbkdf2(password, salt, iterations, key_length, "sha512")
ParameterTypBeschreibung
passwordstringPasswort/Passphrase
saltstringSalt-Wert
iterationsintegerIterationsanzahl (max. 10.000.000)
key_lengthintegerGewünschte Schlüssellänge in Bytes
hashstring?sha256 oder sha512 (Standard: sha256)

Gibt zurück: string, error

local equal = crypto.constant_time_compare(a, b)
ParameterTypBeschreibung
astringErster String
bstringZweiter String

Gibt zurück: boolean

BedingungArtWiederholbar
Ungültige Längeerrors.INVALIDnein
Leerer Schlüsselerrors.INVALIDnein
Ungültige Schlüsselgrößeerrors.INVALIDnein
Entschlüsselung fehlgeschlagenerrors.INTERNALnein
Token abgelaufenerrors.INTERNALnein

Siehe Fehlerbehandlung für die Arbeit mit Fehlern.