Start · Sprachen · PHP · Referenz · mcrypt_list_algorithms

mcrypt_list_algorithms

Funktion

Gibt ein Array mit den Namen aller vom System unterstützten Verschlüsselungsalgorithmen (Chiffren) zurück.

seit PHP 4.0.2 Kategorie: crypto

Signatur

mcrypt_list_algorithms(string $lib_dir = ''): array

Beschreibung

mcrypt_list_algorithms() durchsucht das angegebene Verzeichnis (oder das Standard-Verzeichnis der libmcrypt-Bibliothek) nach verfügbaren Verschlüsselungsmodulen und gibt deren Namen als Array zurück. Typische Werte sind z. B. "aes", "des", "tripledes" oder "blowfish".

Die Funktion ist nützlich, um zur Laufzeit zu prüfen, welche Algorithmen auf dem jeweiligen Server tatsächlich verfügbar sind, bevor ein konkreter Algorithmus für Verschlüsselungsoperationen gewählt wird. So lassen sich portable Anwendungen schreiben, die sich an die Fähigkeiten des Servers anpassen.

Der optionale Parameter lib_dir erlaubt es, ein benutzerdefiniertes Verzeichnis anzugeben, in dem die mcrypt-Module gesucht werden sollen. Wird er weggelassen oder als leerer String übergeben, verwendet PHP das in der php.ini konfigurierte Standard-Verzeichnis (mcrypt.algorithms_dir).

Wichtiger Hinweis: 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-Erweiterung oder sodium (libsodium) verwendet werden.

Parameter

Name Typ Default Beschreibung
$lib_dir string "" Optionaler Pfad zu dem Verzeichnis, in dem die mcrypt-Algorithmus-Module gesucht werden. Wird ein leerer String übergeben oder der Parameter weggelassen, wird der in der php.ini unter mcrypt.algorithms_dir konfigurierte Standardpfad verwendet.

Rückgabewert

Typ
array
Beschreibung
Gibt ein indiziertes Array von Strings zurück, das die Namen aller verfügbaren Verschlüsselungsalgorithmen enthält, z. B. ["arcfour", "blowfish", "des", "rijndael-128", ...]. Das Array ist niemals false; wenn keine Module gefunden wurden, wird ein leeres Array zurückgegeben.

Beispiele

Alle verfügbaren Algorithmen ausgeben

<?php
// Gibt alle auf dem Server verfügbaren Verschlüsselungsalgorithmen aus
$algorithms = mcrypt_list_algorithms();

echo "Verfügbare Algorithmen:" . PHP_EOL;
foreach ($algorithms as $algo) {
    echo ' - ' . $algo . PHP_EOL;
}
?>
Verfügbare Algorithmen: - arcfour - blowfish - blowfish-compat - cast-128 - cast-256 - des - gost - loki97 - rc2 - rijndael-128 - rijndael-192 - rijndael-256 - saferplus - serpent - tripledes - twofish - wake - xtea

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

<?php
// Prüft, ob AES (rijndael-128) auf dem aktuellen System verfügbar ist
$gewuenschterAlgorithmus = 'rijndael-128';
$verfuegbar = mcrypt_list_algorithms();

if (in_array($gewuenschterAlgorithmus, $verfuegbar)) {
    echo "Algorithmus '{$gewuenschterAlgorithmus}' ist verfügbar." . PHP_EOL;
    // Hier könnte die Verschlüsselung mit mcrypt_encrypt() folgen
} else {
    echo "Algorithmus '{$gewuenschterAlgorithmus}' ist NICHT verfügbar!" . PHP_EOL;
    // Fallback oder Fehlerbehandlung
}
?>
Algorithmus 'rijndael-128' ist verfügbar.

// Wichtig · Fallstricke

Deprecation / Entfernung: Die mcrypt-Erweiterung wurde in PHP 7.1.0 als veraltet (deprecated) eingestuft und in PHP 7.2.0 vollständig aus dem PHP-Kern entfernt. In PHP 7.2+ steht mcrypt_list_algorithms() nicht mehr zur Verfügung.

Sicherheit: Viele der von libmcrypt unterstützten Algorithmen (z. B. des, arcfour) gelten als unsicher und sollten in neuen Projekten nicht eingesetzt werden. Für sichere symmetrische Verschlüsselung empfiehlt sich AES-256-GCM über openssl_encrypt() oder sodium_crypto_secretbox().

Migration: Für eine Liste der von OpenSSL unterstützten Chiffren steht openssl_get_cipher_methods() zur Verfügung, das als moderner Ersatz dienen kann.