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