Signatur
Beschreibung
mcrypt_enc_self_test() führt einen internen Selbsttest des durch mcrypt_module_open() geöffneten Verschlüsselungsmoduls durch. Der Test prüft, ob der zugrundeliegende Algorithmus korrekt funktioniert und keine Implementierungsfehler vorliegen.
Die Funktion ist vor allem in sicherheitskritischen Anwendungen nützlich, um sicherzustellen, dass das geladene Krypto-Modul einwandfrei arbeitet, bevor tatsächliche Verschlüsselungs- oder Entschlüsselungsoperationen durchgeführt werden. Sie kann als Sanity-Check direkt nach dem Öffnen eines Moduls eingesetzt werden.
Gibt die Funktion 0 zurück, ist der Test erfolgreich. Jeder andere Wert weist auf einen Fehler im Modul hin, sodass von einer weiteren Verwendung abgeraten wird.
Achtung: Die gesamte mcrypt-Erweiterung gilt seit PHP 7.1.0 als veraltet (deprecated) und wurde in PHP 7.2.0 vollständig entfernt. Für neue Projekte sollte stattdessen openssl oder sodium verwendet werden.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $td Pflicht | resource | Ein Verschlüsselungs-Handle, das zuvor mit mcrypt_module_open() geöffnet wurde. |
Rückgabewert
0 zurück, wenn der Selbsttest erfolgreich war. Ein von 0 abweichender Wert signalisiert, dass der Test fehlgeschlagen ist und das Modul fehlerhaft arbeitet.Beispiele
Selbsttest vor der Verschlüsselung durchführen
<?php
// Modul öffnen
$td = mcrypt_module_open(MCRYPT_RIJNDAEL_128, '', MCRYPT_MODE_CBC, '');
if ($td === false) {
die('Modul konnte nicht geöffnet werden.');
}
// Selbsttest ausführen
$result = mcrypt_enc_self_test($td);
if ($result === 0) {
echo 'Selbsttest erfolgreich – Modul arbeitet korrekt.' . PHP_EOL;
} else {
echo 'Selbsttest fehlgeschlagen – Modul ist fehlerhaft (Code: ' . $result . ').' . PHP_EOL;
}
mcrypt_module_close($td);
Selbsttest mit Fehlerbehandlung kapseln
<?php
function openVerifiedModule(string $cipher, string $mode): resource
{
$td = mcrypt_module_open($cipher, '', $mode, '');
if ($td === false) {
throw new RuntimeException("Modul '$cipher' konnte nicht geöffnet werden.");
}
if (mcrypt_enc_self_test($td) !== 0) {
mcrypt_module_close($td);
throw new RuntimeException("Selbsttest für '$cipher' fehlgeschlagen.");
}
return $td;
}
try {
$td = openVerifiedModule(MCRYPT_BLOWFISH, MCRYPT_MODE_CFB);
echo 'Modul geöffnet und geprüft.' . PHP_EOL;
mcrypt_module_close($td);
} catch (RuntimeException $e) {
echo 'Fehler: ' . $e->getMessage() . PHP_EOL;
}
// Wichtig · Fallstricke
Deprecation: mcrypt_enc_self_test() ist Teil der mcrypt-Erweiterung, die seit PHP 7.1.0 als veraltet markiert und in PHP 7.2.0 vollständig entfernt wurde. Der Einsatz in modernen PHP-Anwendungen ist daher nicht mehr möglich.
Für neue Projekte sollten stattdessen die Erweiterungen openssl (z. B. openssl_encrypt()) oder sodium (z. B. sodium_crypto_secretbox()) verwendet werden, die aktiv gewartet werden und modernen Sicherheitsstandards entsprechen.