Start · Sprachen · PHP · Referenz · mcrypt_module_get_algo_key_size

mcrypt_module_get_algo_key_size

Funktion

Gibt die maximale unterstützte Schlüsselgröße (in Bytes) eines Verschlüsselungsalgorithmus zurück.

seit PHP 4.0.2 Kategorie: crypto

Signatur

mcrypt_module_get_algo_key_size(string $algorithm, string $lib_dir = ''): int

Beschreibung

mcrypt_module_get_algo_key_size() ermittelt die maximale Schlüssellänge in Bytes, die ein bestimmter Verschlüsselungsalgorithmus unterstützt. Dies ist nützlich, um vor der Verschlüsselung sicherzustellen, dass ein übergebener Schlüssel die zulässige Maximallänge nicht überschreitet oder um den Schlüssel entsprechend aufzufüllen.

Der optionale Parameter lib_dir erlaubt die Angabe eines benutzerdefinierten Verzeichnisses, in dem die mcrypt-Bibliotheksmodule gesucht werden. Wird er weggelassen, wird das in der php.ini konfigurierte Standardverzeichnis verwendet.

Wichtig: Die gesamte mcrypt-Erweiterung gilt seit PHP 7.1 als veraltet (deprecated) und wurde mit PHP 7.2 vollständig aus dem Kern entfernt. Für neue Projekte sollte stattdessen die openssl-Erweiterung oder sodium (libsodium, verfügbar ab PHP 7.2) eingesetzt werden.

Die Funktion arbeitet ausschließlich auf der Modulebene und benötigt keine geöffnete Ressource. Sie liest die Metadaten direkt aus dem Algorithmus-Modul.

Parameter

Name Typ Default Beschreibung
$algorithm Pflicht string Name des Algorithmus, z. B. MCRYPT_RIJNDAEL_128, MCRYPT_BLOWFISH oder 'rijndael-128'.
$lib_dir string Optionaler Pfad zum Verzeichnis, in dem die mcrypt-Algorithmusmodule gesucht werden. Leer bedeutet: Standardverzeichnis aus der php.ini.

Rückgabewert

Typ
int
Beschreibung
Gibt die maximale Schlüssellänge in Bytes zurück, die der angegebene Algorithmus unterstützt.

Beispiele

Maximale Schlüsselgröße von AES-256 ermitteln

<?php
// AES-256 entspricht Rijndael-128 mit 256-Bit-Schlüssel
$algorithmus = MCRYPT_RIJNDAEL_128;
$maxKeySize = mcrypt_module_get_algo_key_size($algorithmus);

echo "Maximale Schlüsselgröße für {$algorithmus}: {$maxKeySize} Bytes (" . ($maxKeySize * 8) . " Bit)\n";
?>
Maximale Schlüsselgröße für rijndael-128: 32 Bytes (256 Bit)

Schlüssel validieren und anpassen vor der Verschlüsselung

<?php
$algorithmus = MCRYPT_BLOWFISH;
$modus       = MCRYPT_MODE_CBC;
$maxKeySize  = mcrypt_module_get_algo_key_size($algorithmus);

$roherSchluessel = 'MeinGeheimerLangerSchluesselDerMoeglicherweiseZuLangIst';

// Schlüssel auf die zulässige Maximallänge kürzen
if (strlen($roherSchluessel) > $maxKeySize) {
    $schluessel = substr($roherSchluessel, 0, $maxKeySize);
    echo "Schlüssel wurde auf {$maxKeySize} Bytes gekürzt.\n";
} else {
    $schluessel = $roherSchluessel;
}

echo "Verwendeter Schlüssel: {$schluessel}\n";
?>
Schlüssel wurde auf 56 Bytes gekürzt. Verwendeter Schlüssel: MeinGeheimerLangerSchluesselDerMoeglicherweiseZuLan

// Wichtig · Fallstricke

Deprecation: Die mcrypt-Erweiterung ist seit PHP 7.1.0 als veraltet markiert und wurde in PHP 7.2.0 entfernt. mcrypt_module_get_algo_key_size() steht in aktuellen PHP-Versionen nicht mehr zur Verfügung.

Für moderne Projekte empfiehlt sich die Verwendung von openssl_encrypt() / openssl_decrypt() oder der sodium_*-Funktionen aus der Sodium-Erweiterung. Beide bieten zeitgemäße, sichere Alternativen ohne die Schwächen der mcrypt-Bibliothek.

Beim Erzeugen kryptografischer Schlüssel sollte stets ein kryptografisch sicherer Zufallsgenerator wie random_bytes() verwendet werden, anstatt menschenlesbare Passwörter direkt als Schlüssel einzusetzen.