Signatur
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
["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;
}
?>
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
}
?>
// 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.