Signatur
Beschreibung
openssl_get_md_methods() fragt die OpenSSL-Bibliothek nach allen unterstützten Digest-Algorithmen ab und gibt deren Namen als String-Array zurück. Typische Algorithmen sind sha256, sha512, sha1, md5 und viele weitere, abhängig von der installierten OpenSSL-Version.
Wird der Parameter $aliases auf true gesetzt, werden zusätzlich alle Alias-Namen mit ausgegeben, also alternative Schreibweisen für denselben Algorithmus (z. B. SHA256 neben sha256 oder ältere OpenSSL-interne Namen). Ohne Aliases enthält die Liste nur die kanonischen, einzigartigen Namen.
Die Funktion ist besonders nützlich, wenn ein PHP-Programm flexibel auf verschiedenen Servern mit unterschiedlichen OpenSSL-Versionen betrieben wird und sichergestellt werden soll, dass ein bestimmter Hash-Algorithmus tatsächlich verfügbar ist, bevor er in Funktionen wie openssl_digest() oder hash_hmac() verwendet wird.
Sicherheitshinweis: Nicht alle verfügbaren Algorithmen gelten als kryptografisch sicher. md5 und sha1 gelten heute als veraltet und sollten für sicherheitskritische Anwendungen durch sha256 oder stärkere Algorithmen ersetzt werden.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $aliases | bool | false | Wenn true, werden auch Alias-Namen für Digest-Algorithmen in der Rückgabe mit eingeschlossen. Standardmäßig (false) werden nur die kanonischen, eindeutigen Namen zurückgegeben. |
Rückgabewert
$aliases = true kann die Liste deutlich länger sein, da alternative Schreibweisen ebenfalls enthalten sind.Beispiele
Alle verfügbaren Digest-Methoden auflisten
<?php
$methods = openssl_get_md_methods();
echo 'Anzahl verfügbarer Methoden: ' . count($methods) . PHP_EOL;
foreach ($methods as $method) {
echo $method . PHP_EOL;
}
Prüfen, ob ein bestimmter Algorithmus verfügbar ist
<?php
$requiredAlgorithm = 'sha256';
$availableMethods = openssl_get_md_methods();
if (in_array($requiredAlgorithm, $availableMethods, true)) {
$data = 'Geheimer Text';
$digest = openssl_digest($data, $requiredAlgorithm);
echo 'SHA-256 Digest: ' . $digest . PHP_EOL;
} else {
echo 'Der Algorithmus ' . $requiredAlgorithm . ' ist auf diesem System nicht verfügbar.' . PHP_EOL;
}
Methoden mit Aliases abrufen und vergleichen
<?php
$ohneAliases = openssl_get_md_methods(false);
$mitAliases = openssl_get_md_methods(true);
echo 'Ohne Aliases: ' . count($ohneAliases) . ' Einträge' . PHP_EOL;
echo 'Mit Aliases: ' . count($mitAliases) . ' Einträge' . PHP_EOL;
// Nur die Aliases anzeigen
$nurAliases = array_diff($mitAliases, $ohneAliases);
sort($nurAliases);
echo 'Beispiel-Aliases: ' . implode(', ', array_slice($nurAliases, 0, 5)) . PHP_EOL;
// Wichtig · Fallstricke
Veraltete Algorithmen: md5 und sha1 sind kryptografisch kompromittiert und sollten für Passwort-Hashing, digitale Signaturen oder Integritätsprüfungen in sicherheitskritischen Anwendungen nicht mehr verwendet werden. Bevorzuge sha256, sha384 oder sha512.
OpenSSL-Version: Die zurückgegebene Liste ist vollständig abhängig von der auf dem Server installierten OpenSSL-Version. Ein Algorithmus, der in der Entwicklungsumgebung verfügbar ist, muss auf dem Produktionsserver nicht zwingend vorhanden sein. Deshalb sollte die Verfügbarkeit zur Laufzeit geprüft werden.
Groß-/Kleinschreibung: Ohne Aliases sind die Namen meist kleingeschrieben. Bei der Prüfung mit in_array() empfiehlt sich ein strikter Vergleich (true als drittes Argument) oder eine Normalisierung per strtolower().