Start · Sprachen · PHP · Referenz · mcrypt_module_self_test

mcrypt_module_self_test

Funktion

Führt einen internen Selbsttest eines mcrypt-Algorithmus-Moduls durch und prüft damit dessen Funktionsfähigkeit.

seit PHP 4.0.2 Kategorie: crypto

Signatur

mcrypt_module_self_test(string $algorithm, string|null $lib_dir = null): bool

Beschreibung

mcrypt_module_self_test() ruft die im Algorithmus-Modul eingebaute Selbsttestfunktion auf. Dabei werden interne Testvektoren gegen bekannte Ausgaben geprüft, um sicherzustellen, dass das Modul korrekt funktioniert und nicht beschädigt ist.

Die Funktion ist nützlich, um nach der Installation oder Kompilierung einer mcrypt-Bibliothek zu verifizieren, dass die einzelnen Algorithmen wie erwartet arbeiten – z. B. als Teil eines Deployment-Skripts oder einer Systemprüfung.

Als erster Parameter wird der Name des Algorithmus übergeben (z. B. MCRYPT_AES, MCRYPT_BLOWFISH usw.). Optional kann über $lib_dir ein Verzeichnis angegeben werden, in dem nach den Modul-Dateien gesucht wird; ohne Angabe wird das standardmäßig konfigurierte Verzeichnis verwendet.

Achtung: Die gesamte mcrypt-Erweiterung ist seit PHP 7.1 deprecated und wurde in PHP 7.2 vollständig entfernt. Für neue Projekte sollte stattdessen openssl oder sodium verwendet werden.

Parameter

Name Typ Default Beschreibung
$algorithm Pflicht string Name des zu testenden Verschlüsselungsalgorithmus, z. B. MCRYPT_AES, MCRYPT_BLOWFISH oder MCRYPT_TRIPLEDES.
$lib_dir string|null null Optionaler Pfad zu dem Verzeichnis, in dem die Algorithmus-Modul-Dateien gesucht werden. Wird null oder kein Wert angegeben, wird das in der PHP-Konfiguration hinterlegte Standardverzeichnis verwendet.

Rückgabewert

Typ
bool
Beschreibung
Gibt true zurück, wenn der Selbsttest erfolgreich war, andernfalls false. Ein Rückgabewert von false deutet darauf hin, dass das Modul fehlerhaft oder beschädigt ist.

Beispiele

Selbsttest für einen einzelnen Algorithmus

<?php
// Prüft, ob das AES-Modul korrekt funktioniert
if (mcrypt_module_self_test(MCRYPT_AES)) {
    echo 'AES-Modul besteht den Selbsttest.';
} else {
    echo 'AES-Modul ist fehlerhaft!';
}
AES-Modul besteht den Selbsttest.

Mehrere Algorithmen in einer Schleife testen

<?php
// Alle verfügbaren Algorithmen testen
$algorithms = mcrypt_list_algorithms();

foreach ($algorithms as $algo) {
    $result = mcrypt_module_self_test($algo);
    printf(
        "%-20s %s\n",
        $algo,
        $result ? 'OK' : 'FEHLGESCHLAGEN'
    );
}
aes OK blowfish OK tripledes OK ...

// Wichtig · Fallstricke

Deprecated seit PHP 7.1.0: Die gesamte mcrypt-Erweiterung wurde in PHP 7.1 als veraltet markiert und in PHP 7.2 vollständig entfernt. Code, der diese Funktion verwendet, ist auf modernen PHP-Versionen nicht lauffähig.

Für symmetrische Verschlüsselung sollte stattdessen openssl_encrypt() / openssl_decrypt() oder die sodium-Erweiterung (z. B. sodium_crypto_secretbox()) verwendet werden, die aktiv gepflegt und sicherheitsgeprüft sind.

Ein bestandener Selbsttest garantiert nicht die kryptografische Sicherheit des Algorithmus oder seiner Verwendung – er prüft lediglich die interne Implementierungsrichtigkeit des Moduls.