Start · Sprachen · PHP · Referenz · mcrypt_enc_get_supported_key_sizes

mcrypt_enc_get_supported_key_sizes

Funktion

Gibt ein Array mit allen vom geöffneten Verschlüsselungsalgorithmus unterstützten Schlüsselgrößen (in Bytes) zurück.

seit PHP 4.0.2 Kategorie: crypto

Signatur

mcrypt_enc_get_supported_key_sizes(resource $td): array

Beschreibung

mcrypt_enc_get_supported_key_sizes() liefert ein Array mit den exakten Schlüssellängen in Bytes, die der geöffnete Algorithmus akzeptiert. Diese Funktion ist nützlich, um vor der eigentlichen Verschlüsselung sicherzustellen, dass ein gewählter Schlüssel die korrekte Länge besitzt.

Das zurückgegebene Array enthält nur diskrete, ganzzahlige Werte. Ein leeres Array bedeutet, dass der Algorithmus variable Schlüssellängen unterstützt — in diesem Fall kann mcrypt_enc_get_key_size() verwendet werden, um die maximal erlaubte Schlüssellänge zu ermitteln.

Die Funktion erfordert ein mit mcrypt_module_open() geöffnetes Deskriptor-Handle ($td). Sie sollte zusammen mit anderen Abfragefunktionen wie mcrypt_enc_get_iv_size() oder mcrypt_enc_get_block_size() eingesetzt werden, um den Algorithmus korrekt zu konfigurieren.

Achtung: Die gesamte mcrypt-Erweiterung gilt seit PHP 7.1 als veraltet und wurde in PHP 7.2 vollständig entfernt. Für neue Projekte sollte stattdessen openssl_*-Funktionen oder die sodium-Erweiterung verwendet werden.

Parameter

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

Rückgabewert

Typ
array
Beschreibung
Ein Array mit den unterstützten Schlüsselgrößen des Algorithmus in Bytes. Ist das Array leer, unterstützt der Algorithmus variable Schlüssellängen bis zur maximalen Größe, die mcrypt_enc_get_key_size() zurückgibt.

Beispiele

Unterstützte Schlüsselgrößen eines Algorithmus abfragen

<?php
// Algorithmus und Modus öffnen
$td = mcrypt_module_open(MCRYPT_RIJNDAEL_128, '', MCRYPT_MODE_CBC, '');

// Unterstützte Schlüsselgrößen abrufen
$keySizes = mcrypt_enc_get_supported_key_sizes($td);

if (empty($keySizes)) {
    echo 'Der Algorithmus unterstützt variable Schlüssellängen.' . PHP_EOL;
    echo 'Maximale Schlüssellänge: ' . mcrypt_enc_get_key_size($td) . ' Bytes' . PHP_EOL;
} else {
    echo 'Unterstützte Schlüsselgrößen (in Bytes): ';
    echo implode(', ', $keySizes) . PHP_EOL;
}

mcrypt_module_close($td);
?>
Unterstützte Schlüsselgrößen (in Bytes): 16, 24, 32

Schlüssel auf gültige Länge prüfen vor der Verschlüsselung

<?php
$algorithm = MCRYPT_RIJNDAEL_128;
$mode = MCRYPT_MODE_CBC;
$key = 'MeinGeheimerKey1'; // 16 Zeichen = 16 Bytes

$td = mcrypt_module_open($algorithm, '', $mode, '');
$supportedSizes = mcrypt_enc_get_supported_key_sizes($td);

$keyLength = strlen($key);

if (!empty($supportedSizes) && !in_array($keyLength, $supportedSizes)) {
    echo 'Ungültige Schlüssellänge: ' . $keyLength . ' Bytes.' . PHP_EOL;
    echo 'Erlaubte Längen: ' . implode(', ', $supportedSizes) . PHP_EOL;
} else {
    echo 'Schlüssellänge ' . $keyLength . ' Bytes ist gültig.' . PHP_EOL;
    // Hier würde die eigentliche Verschlüsselung folgen
}

mcrypt_module_close($td);
?>
Schlüssellänge 16 Bytes ist gültig.

// Wichtig · Fallstricke

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

Für neue Projekte oder Migrationen empfiehlt sich der Einsatz von openssl_encrypt() / openssl_decrypt() oder der Sodium-Erweiterung (sodium_crypto_secretbox() etc.), die von modernen Kryptographie-Standards unterstützt werden und aktiv gewartet werden.

Ein leeres Rückgabe-Array ist kein Fehler, sondern zeigt an, dass der Algorithmus flexible Schlüssellängen erlaubt. In diesem Fall liefert mcrypt_enc_get_key_size() die maximale erlaubte Länge.