Start · Sprachen · PHP · Referenz · sodium_crypto_aead_aegis128l_keygen

sodium_crypto_aead_aegis128l_keygen

Funktion

Erzeugt einen kryptografisch sicheren, zufälligen Schlüssel für die AEGIS-128L-AEAD-Verschlüsselung.

seit PHP 8.4.0 Kategorie: crypto

Signatur

sodium_crypto_aead_aegis128l_keygen(): string

Beschreibung

sodium_crypto_aead_aegis128l_keygen() generiert einen zufälligen 128-Bit-Schlüssel (16 Bytes), der für die Verwendung mit den AEGIS-128L-AEAD-Funktionen (sodium_crypto_aead_aegis128l_encrypt, sodium_crypto_aead_aegis128l_decrypt usw.) bestimmt ist. Der Schlüssel wird intern über einen kryptografisch sicheren Zufallszahlengenerator erzeugt.

AEGIS-128L ist ein modernes, hochperformantes Authenticated-Encryption-with-Associated-Data-Verfahren (AEAD), das sowohl die Vertraulichkeit als auch die Integrität der Daten sicherstellt. Im Vergleich zu AES-GCM bietet AEGIS-128L auf moderner Hardware eine deutlich höhere Durchsatzrate.

Der zurückgegebene Schlüssel sollte sicher gespeichert und niemals im Klartext übertragen werden. Für die Schlüsselableitung aus Passwörtern sollte stattdessen sodium_crypto_pwhash verwendet werden.

Rückgabewert

Typ
string
Beschreibung
Gibt einen binären String der Länge SODIUM_CRYPTO_AEAD_AEGIS128L_KEYBYTES (16 Bytes) zurück, der den zufällig erzeugten Schlüssel enthält.

Beispiele

Schlüssel erzeugen und für spätere Verwendung speichern

<?php
// Schlüssel erzeugen
$key = sodium_crypto_aead_aegis128l_keygen();

// Schlüssel als Hex-String ausgeben (z. B. zur sicheren Speicherung)
echo bin2hex($key) . PHP_EOL;
echo 'Schlüssellänge: ' . strlen($key) . ' Bytes' . PHP_EOL;
a3f1e29c4b7d056e8f123a4c9d3e7b01 Schlüssellänge: 16 Bytes

Verschlüsselung und Entschlüsselung mit AEGIS-128L

<?php
// Schlüssel und Nonce erzeugen
$key   = sodium_crypto_aead_aegis128l_keygen();
$nonce = random_bytes(SODIUM_CRYPTO_AEAD_AEGIS128L_NPUBBYTES);

$plaintext = 'Geheime Nachricht';
$additionalData = 'Öffentliche Metadaten';

// Verschlüsseln
$ciphertext = sodium_crypto_aead_aegis128l_encrypt(
    $plaintext,
    $additionalData,
    $nonce,
    $key
);

// Entschlüsseln
$decrypted = sodium_crypto_aead_aegis128l_decrypt(
    $ciphertext,
    $additionalData,
    $nonce,
    $key
);

if ($decrypted === false) {
    throw new RuntimeException('Entschlüsselung fehlgeschlagen!');
}

echo $decrypted . PHP_EOL;
Geheime Nachricht

// Wichtig · Fallstricke

Sicherheitshinweise:

  • Den erzeugten Schlüssel niemals im Klartext loggen, ausgeben oder in unsicheren Speicherorten ablegen.
  • Eine Nonce darf mit demselben Schlüssel niemals wiederverwendet werden – dies würde die Vertraulichkeit und Integrität der Verschlüsselung gefährden.
  • AEGIS-128L ist ab libsodium 1.0.19 verfügbar. In PHP steht die Funktion ab Version 8.4.0 zur Verfügung. Ältere PHP-Versionen unterstützen AEGIS-128L nicht.
  • Für den Austausch von Schlüsseln zwischen Parteien sollte ein geeignetes Schlüsselaustauschprotokoll wie sodium_crypto_kx genutzt werden.