Start · Sprachen · PHP · Referenz · mcrypt_list_modes

mcrypt_list_modes

Funktion

Gibt ein Array aller vom Mcrypt-System unterstützten Verschlüsselungsmodi zurück.

seit PHP 4.0.2 Kategorie: crypto

Signatur

mcrypt_list_modes(string $lib_dir = ''): array

Beschreibung

mcrypt_list_modes() liefert eine Liste aller Verschlüsselungsmodi, die von der installierten libmcrypt-Bibliothek unterstützt werden. Typische Modi sind beispielsweise cbc (Cipher Block Chaining), ecb (Electronic Codebook), cfb (Cipher Feedback) oder ctr (Counter).

Die Funktion ist nützlich, um zur Laufzeit zu prüfen, welche Modi auf dem aktuellen System verfügbar sind, bevor eine Verschlüsselung mit mcrypt_encrypt() oder mcrypt_module_open() durchgeführt wird. So lassen sich Kompatibilitätsprobleme zwischen verschiedenen Serverumgebungen vermeiden.

Optional kann ein Verzeichnispfad ($lib_dir) angegeben werden, aus dem die Modi geladen werden sollen. Wird kein Pfad angegeben oder ein leerer String übergeben, nutzt die Funktion das Standard-Bibliotheksverzeichnis der libmcrypt-Installation.

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

Parameter

Name Typ Default Beschreibung
$lib_dir string Optionaler Pfad zum Verzeichnis, in dem die Mcrypt-Modus-Module gesucht werden. Wird ein leerer String übergeben oder der Parameter weggelassen, wird das Standard-Systemverzeichnis verwendet.

Rückgabewert

Typ
array
Beschreibung
Gibt ein indiziertes Array von Strings zurück, das die Namen aller unterstützten Verschlüsselungsmodi enthält, z. B. ['cbc', 'cfb', 'ctr', 'ecb', 'ncfb', 'nofb', 'ofb', 'stream'].

Beispiele

Alle verfügbaren Modi ausgeben

<?php
$modes = mcrypt_list_modes();
echo "Unterstützte Verschlüsselungsmodi:" . PHP_EOL;
foreach ($modes as $mode) {
    echo ' - ' . $mode . PHP_EOL;
}
?>
Unterstützte Verschlüsselungsmodi: - cbc - cfb - ctr - ecb - ncfb - nofb - ofb - stream

Prüfen, ob ein bestimmter Modus verfügbar ist

<?php
$gewuenschterModus = 'cbc';
$verfuegbareModi = mcrypt_list_modes();

if (in_array($gewuenschterModus, $verfuegbareModi, true)) {
    echo "Der Modus '{$gewuenschterModus}' ist verfügbar." . PHP_EOL;
    // Verschlüsselung mit dem Modus durchführen ...
} else {
    echo "Der Modus '{$gewuenschterModus}' wird auf diesem System nicht unterstützt." . PHP_EOL;
}
?>
Der Modus 'cbc' ist verfügbar.

// Wichtig · Fallstricke

Deprecation-Hinweis: Die mcrypt-Erweiterung und alle zugehörigen Funktionen, einschließlich mcrypt_list_modes(), wurden in PHP 7.1 als veraltet markiert (deprecated) und in PHP 7.2 vollständig aus dem Sprachkern entfernt. Bei Verwendung in PHP 7.1 wird eine E_DEPRECATED-Warnung ausgegeben.

Für moderne PHP-Projekte sollte auf die openssl_*-Funktionen (z. B. openssl_encrypt()) oder die sodium_*-Funktionen (z. B. sodium_crypto_secretbox()) umgestellt werden, da diese aktiv gepflegt werden und als kryptografisch sicherer gelten. Der ECB-Modus (ecb) sollte grundsätzlich gemieden werden, da er keine semantische Sicherheit bietet.