Signatur
Beschreibung
mcrypt_module_close() schließt einen zuvor mit mcrypt_module_open() geöffneten Verschlüsselungs-Deskriptor und gibt alle damit verbundenen Speicher-Ressourcen wieder frei. Die Funktion sollte immer aufgerufen werden, sobald ein Verschlüsselungsvorgang abgeschlossen ist, um Speicherlecks zu vermeiden.
Der typische Arbeitsablauf mit den mcrypt-Funktionen sieht so aus: Modul öffnen mit mcrypt_module_open(), Verschlüsselung initialisieren mit mcrypt_generic_init(), Daten ver- oder entschlüsseln, Ressourcen mit mcrypt_generic_deinit() freigeben und schließlich das Modul mit mcrypt_module_close() schließen.
Wichtiger Hinweis zur Deprecation: Die gesamte mcrypt-Erweiterung wurde mit PHP 7.1.0 als veraltet markiert (deprecated) und mit PHP 7.2.0 vollständig entfernt. Für neue Projekte sollte stattdessen die openssl-Erweiterung oder die sodium-Erweiterung (ab PHP 7.2) verwendet werden.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $td Pflicht | resource | Der Verschlüsselungs-Deskriptor, der zuvor mit mcrypt_module_open() geöffnet wurde. |
Rückgabewert
true bei Erfolg zurück, oder false bei einem Fehler.Beispiele
Vollständiger Verschlüsselungszyklus mit mcrypt_module_close
<?php
// Modul öffnen
$td = mcrypt_module_open(MCRYPT_RIJNDAEL_128, '', MCRYPT_MODE_CBC, '');
// Schlüssel und IV erzeugen
$key = substr(hash('sha256', 'geheimesPasswort', true), 0, 16);
$iv = mcrypt_create_iv(mcrypt_enc_get_iv_size($td), MCRYPT_DEV_URANDOM);
// Verschlüsselung initialisieren
mcrypt_generic_init($td, $key, $iv);
// Daten verschlüsseln
$plaintext = 'Geheimer Text';
$ciphertext = mcrypt_generic($td, $plaintext);
// Ressourcen der Initialisierung freigeben
mcrypt_generic_deinit($td);
// Modul schließen
mcrypt_module_close($td);
echo 'Verschlüsselung abgeschlossen. Länge des Ciphertexts: ' . strlen($ciphertext) . ' Bytes.' . PHP_EOL;
Moderne Alternative mit OpenSSL (empfohlen ab PHP 7.2+)
<?php
// Empfohlene Alternative zu mcrypt mit openssl_encrypt
$key = openssl_random_pseudo_bytes(32);
$iv = openssl_random_pseudo_bytes(openssl_cipher_iv_length('AES-256-CBC'));
$plaintext = 'Geheimer Text';
$ciphertext = openssl_encrypt($plaintext, 'AES-256-CBC', $key, OPENSSL_RAW_DATA, $iv);
echo 'Verschlüsselt mit OpenSSL. Länge: ' . strlen($ciphertext) . ' Bytes.' . PHP_EOL;
// Entschlüsseln
$decrypted = openssl_decrypt($ciphertext, 'AES-256-CBC', $key, OPENSSL_RAW_DATA, $iv);
echo 'Entschlüsselt: ' . $decrypted . PHP_EOL;
// Wichtig · Fallstricke
Deprecation: Die mcrypt-Erweiterung wurde in PHP 7.1.0 als veraltet markiert und in PHP 7.2.0 vollständig entfernt. Code, der mcrypt_module_close() verwendet, ist daher nicht mehr kompatibel mit PHP 7.2 und neuer.
Reihenfolge beachten: mcrypt_module_close() darf erst aufgerufen werden, nachdem mcrypt_generic_deinit() die Initialisierungs-Ressourcen freigegeben hat. Eine falsche Reihenfolge kann zu Fehlern oder Speicherlecks führen.
Sicherheitshinweis: Die mcrypt-Bibliothek (libmcrypt) wurde seit 2007 nicht mehr aktiv gepflegt. Es wird dringend empfohlen, auf openssl_encrypt()/openssl_decrypt() oder die sodium_crypto_*-Funktionen umzusteigen, die moderne und sichere Algorithmen implementieren.