Verschlüsselung & Signierung
Verschlüsselung & Signierung
Abschnitt betitelt „Verschlüsselung & Signierung“Kryptografische Operationen einschließlich Verschlüsselung, HMAC, JWT und Schlüsselableitung. Angepasst für Workflows.
local crypto = require("crypto")Zufallsgenerierung
Abschnitt betitelt „Zufallsgenerierung“Zufallsbytes
Abschnitt betitelt „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
Abschnitt betitelt „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
Abschnitt betitelt „Zufalls-UUID“local id, err = crypto.random.uuid()Gibt zurück: string, error
HMAC-SHA256
Abschnitt betitelt „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
Abschnitt betitelt „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
Abschnitt betitelt „Verschlüsselung“AES-GCM {id=“encrypt-aes-gcm”}
Abschnitt betitelt „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”}
Abschnitt betitelt „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
Abschnitt betitelt „Entschlüsselung“AES-GCM {id=“decrypt-aes-gcm”}
Abschnitt betitelt „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”}
Abschnitt betitelt „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
Kodieren
Abschnitt betitelt „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
Abschnitt betitelt „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
Abschnitt betitelt „Schlüsselableitung“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
Abschnitt betitelt „Hilfsfunktionen“Konstantzeit-Vergleich
Abschnitt betitelt „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
| 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.