Signatur
Beschreibung
mcrypt_enc_get_iv_size() ermittelt die erforderliche Größe des Initialisierungsvektors (IV) in Bytes für den Algorithmus, der mit dem übergebenen Verschlüsselungs-Deskriptor verknüpft ist. Der IV ist ein zufälliger Startwert, der in vielen Betriebsmodi (z. B. CBC, CFB, OFB) benötigt wird, um die Verschlüsselung zu randomisieren und identische Klartextblöcke in unterschiedliche Chiffretextblöcke umzuwandeln.
Die Funktion wird nach dem Öffnen eines Verschlüsselungs-Deskriptors mit mcrypt_module_open() aufgerufen. Mit dem zurückgegebenen Wert kann ein IV der korrekten Länge generiert werden – beispielsweise mit mcrypt_create_iv() –, bevor mcrypt_generic_init() aufgerufen wird.
Gibt die Funktion 0 zurück, bedeutet dies, dass der gewählte Algorithmus oder Betriebsmodus keinen IV benötigt (z. B. beim ECB-Modus). In diesem Fall kann NULL oder ein leerer String als IV übergeben werden.
Achtung: Die gesamte mcrypt-Erweiterung ist seit PHP 7.1.0 als veraltet markiert und wurde in PHP 7.2.0 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üsselungs-Deskriptor, der zuvor mit mcrypt_module_open() geöffnet wurde. |
Rückgabewert
0 bedeutet, dass der Algorithmus bzw. Modus keinen IV benötigt.Beispiele
IV-Größe ermitteln und IV erzeugen
<?php
// Verschlüsselungs-Deskriptor öffnen (AES-256 im CBC-Modus)
$td = mcrypt_module_open(MCRYPT_RIJNDAEL_128, '', MCRYPT_MODE_CBC, '');
// Größe des IV ermitteln
$iv_size = mcrypt_enc_get_iv_size($td);
echo "IV-Größe: " . $iv_size . " Bytes\n";
// IV in der korrekten Größe erzeugen
if ($iv_size > 0) {
$iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);
} else {
$iv = '';
}
$key = 'meinGeheimesPassw'; // Schlüssel (sollte 16/24/32 Bytes lang sein)
mcrypt_generic_init($td, $key, $iv);
$encrypted = mcrypt_generic($td, 'Geheimer Text');
echo "Verschlüsselt (hex): " . bin2hex($encrypted) . "\n";
mcrypt_generic_deinit($td);
mcrypt_module_close($td);
?>
Prüfen, ob ein IV benötigt wird
<?php
// ECB-Modus benötigt keinen IV
$td = mcrypt_module_open(MCRYPT_RIJNDAEL_128, '', MCRYPT_MODE_ECB, '');
$iv_size = mcrypt_enc_get_iv_size($td);
if ($iv_size === 0) {
echo "Kein IV erforderlich für diesen Modus.\n";
} else {
echo "IV-Größe: " . $iv_size . " Bytes\n";
}
mcrypt_module_close($td);
?>
// Wichtig · Fallstricke
Deprecation: Die mcrypt-Erweiterung wurde in PHP 7.1.0 als veraltet (deprecated) eingestuft und in PHP 7.2.0 vollständig entfernt. Code, der diese Funktion verwendet, läuft auf modernen PHP-Versionen nicht mehr. Migrieren Sie zu openssl_encrypt() / openssl_decrypt() oder zur sodium-Erweiterung (sodium_crypto_secretbox() etc.).
Sicherheitshinweis: Verwenden Sie als IV-Quelle niemals unsichere Zufallsquellen. Auch wenn MCRYPT_RAND im Beispiel gezeigt wird, sollte in sicherheitskritischen Anwendungen MCRYPT_DEV_URANDOM genutzt werden. Ein IV muss für jede Verschlüsselungsoperation einzigartig, aber nicht zwingend geheim sein.