Start · Sprachen · PHP · Referenz · mcrypt_enc_self_test

mcrypt_enc_self_test

Funktion

Führt einen Selbsttest des geöffneten Verschlüsselungsmoduls durch und gibt <code>0</code> bei Erfolg zurück.

seit PHP 4.0.2 Kategorie: crypto

Signatur

mcrypt_enc_self_test(resource $td): int

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

Typ
int
Beschreibung
Gibt 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 erfolgreich – Modul arbeitet korrekt.

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;
}
Modul geöffnet und geprüft.

// 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.