Start · Sprachen · PHP · Referenz · mcrypt_enc_get_key_size

mcrypt_enc_get_key_size

Funktion

Liefert die maximale unterstützte Schlüsselgröße (in Bytes) des geöffneten Verschlüsselungs-Deskriptors.

seit PHP 4.0.2 Kategorie: crypto

Signatur

mcrypt_enc_get_key_size(resource $td): int

Beschreibung

mcrypt_enc_get_key_size() gibt die maximale Schlüsselgröße in Bytes zurück, die der durch den Deskriptor $td geöffnete Verschlüsselungsalgorithmus unterstützt. Der Deskriptor muss zuvor mit mcrypt_module_open() geöffnet worden sein.

Diese Funktion ist nützlich, wenn man sicherstellen möchte, dass ein Schlüssel die korrekte Länge für den gewählten Algorithmus hat. Viele Algorithmen wie AES-256 benötigen beispielsweise exakt 32 Bytes, während andere Algorithmen flexible Schlüssellängen erlauben. Mit dem Rückgabewert kann man den Schlüssel entsprechend anpassen oder abschneiden.

Typischerweise wird mcrypt_enc_get_key_size() zusammen mit anderen mcrypt_enc_*-Funktionen verwendet, um vor der eigentlichen Verschlüsselung die Parameter des Algorithmus abzufragen und korrekt zu konfigurieren.

Hinweis: Die gesamte mcrypt-Erweiterung gilt seit PHP 7.1 als veraltet (deprecated) und wurde in PHP 7.2 vollständig entfernt. Für neuen Code sollte stattdessen die openssl- oder sodium-Erweiterung verwendet werden.

Parameter

Name Typ Default Beschreibung
$td Pflicht resource Ein Verschlüsselungs-Deskriptor, der zuvor mit mcrypt_module_open() geöffnet wurde.

Rückgabewert

Typ
int
Beschreibung
Gibt die maximale Schlüsselgröße des geöffneten Algorithmus in Bytes als int zurück.

Beispiele

Maximale Schlüsselgröße eines Algorithmus abfragen

<?php
// Verschlüsselungs-Deskriptor öffnen (Algorithmus: AES-256 = rijndael-256, Modus: CBC)
$td = mcrypt_module_open(MCRYPT_RIJNDAEL_256, '', MCRYPT_MODE_CBC, '');

if ($td !== false) {
    $maxKeySize = mcrypt_enc_get_key_size($td);
    echo "Maximale Schlüsselgröße: " . $maxKeySize . " Bytes\n";

    // Schlüssel auf die maximale Länge kürzen oder auffüllen
    $key = 'meinGeheimesPasswort';
    $key = substr(str_pad($key, $maxKeySize, '\0'), 0, $maxKeySize);
    echo "Verwendeter Schlüssel (Länge): " . strlen($key) . " Bytes\n";

    mcrypt_module_close($td);
} else {
    echo "Algorithmus konnte nicht geöffnet werden.\n";
}
?>
Maximale Schlüsselgröße: 32 Bytes Verwendeter Schlüssel (Länge): 32 Bytes

Schlüsselgröße verschiedener Algorithmen vergleichen

<?php
$algorithms = [
    MCRYPT_DES        => 'DES',
    MCRYPT_TRIPLEDES  => '3DES',
    MCRYPT_RIJNDAEL_128 => 'AES-128 (Rijndael-128)',
];

foreach ($algorithms as $algo => $name) {
    $td = mcrypt_module_open($algo, '', MCRYPT_MODE_CBC, '');
    if ($td !== false) {
        $size = mcrypt_enc_get_key_size($td);
        echo $name . ': max. Schlüsselgröße = ' . $size . " Bytes\n";
        mcrypt_module_close($td);
    }
}
?>
DES: max. Schlüsselgröße = 8 Bytes 3DES: max. Schlüsselgröße = 24 Bytes AES-128 (Rijndael-128): max. Schlüsselgröße = 16 Bytes

// Wichtig · Fallstricke

Deprecation: Die mcrypt-Erweiterung wurde in PHP 7.1 als veraltet markiert und in PHP 7.2 vollständig entfernt. mcrypt_enc_get_key_size() steht in PHP 7.2+ nicht mehr zur Verfügung.

Für neue Projekte und Migrationen wird empfohlen, openssl_cipher_key_length() (OpenSSL-Erweiterung) oder die sodium-Konstanten (z. B. SODIUM_CRYPTO_SECRETBOX_KEYBYTES) zu verwenden, da diese aktiv gewartet und sicherheitstechnisch auf dem neuesten Stand sind.

Die von mcrypt_enc_get_key_size() zurückgegebene Größe ist die maximale Schlüsselgröße. Manche Algorithmen akzeptieren auch kürzere Schlüssel — welche Längen erlaubt sind, kann mit mcrypt_enc_get_supported_key_sizes() abgefragt werden.