Signatur
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
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);
?>
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);
?>
// 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.