Signatur
Beschreibung
hash_algos() liefert eine indizierte Liste aller Hashing-Algorithmen, die von der installierten PHP-Version und der zugehörigen Hash-Extension unterstützt werden. Die zurückgegebenen Algorithmus-Namen können direkt als erstes Argument an Funktionen wie hash(), hash_file() oder hash_hmac() übergeben werden.
Die verfügbaren Algorithmen variieren je nach PHP-Version und Kompilierungsoptionen des Systems. Typischerweise enthält die Liste Algorithmen wie md5, sha1, sha256, sha512, whirlpool, ripemd160 sowie diverse weitere wie crc32, adler32 oder moderne Verfahren wie sha3-256.
Die Funktion ist besonders nützlich, wenn eine Anwendung prüfen möchte, ob ein bestimmter Algorithmus auf dem Zielsystem verfügbar ist, bevor sie ihn einsetzt – etwa durch Kombination mit in_array(). Außerdem eignet sie sich, um in Entwicklungsumgebungen schnell einen Überblick über alle verfügbaren Optionen zu erhalten.
Seit PHP 7.2 enthält die Liste auch HMAC-fähige Algorithmen, die über hash_hmac_algos() separat abgerufen werden können, falls ausschließlich HMAC-kompatible Verfahren benötigt werden.
Rückgabewert
array mit den Namen aller unterstützten Hashing-Algorithmen als Strings (z. B. 'sha256', 'md5'). Das Array ist stets nicht leer, da mindestens einige Basis-Algorithmen immer vorhanden sind.Beispiele
Alle verfügbaren Algorithmen ausgeben
<?php
$algos = hash_algos();
echo 'Verfügbare Algorithmen (' . count($algos) . '):' . PHP_EOL;
foreach ($algos as $algo) {
echo ' ' . $algo . PHP_EOL;
}
Prüfen, ob ein bestimmter Algorithmus verfügbar ist
<?php
$wunschAlgorithmus = 'sha3-256';
if (in_array($wunschAlgorithmus, hash_algos(), true)) {
$hash = hash($wunschAlgorithmus, 'Geheime Nachricht');
echo 'SHA3-256 Hash: ' . $hash . PHP_EOL;
} else {
// Fallback auf sha256, das immer verfügbar ist
$hash = hash('sha256', 'Geheime Nachricht');
echo 'Fallback SHA-256 Hash: ' . $hash . PHP_EOL;
}
Nur kryptografisch relevante Algorithmen filtern
<?php
// Nur SHA-Familie und RIPEMD anzeigen (keine Checksummen wie crc32)
$algos = hash_algos();
$kryptoAlgos = array_filter($algos, function (string $algo): bool {
return str_starts_with($algo, 'sha') || str_starts_with($algo, 'ripemd');
});
echo implode(', ', $kryptoAlgos) . PHP_EOL;
// Wichtig · Fallstricke
Sicherheitshinweis: Nicht alle von hash_algos() zurückgegebenen Algorithmen sind für kryptografische Zwecke geeignet. Algorithmen wie md5, sha1, crc32 oder adler32 sollten nicht für Passwort-Hashing, digitale Signaturen oder sicherheitsrelevante Anwendungen genutzt werden. Für Passwörter empfiehlt sich stets password_hash(). Für allgemeine kryptografische Hashes eignen sich sha256, sha512 oder sha3-256.
Seit PHP 7.2 steht hash_hmac_algos() zur Verfügung, welche ausschließlich die für HMAC verwendbaren Algorithmen zurückgibt – also eine Teilmenge von hash_algos().
Die exakte Liste der verfügbaren Algorithmen ist plattformabhängig und kann zwischen verschiedenen Server-Umgebungen abweichen. Portabler Code sollte daher vor der Nutzung selten vorhandener Algorithmen stets eine Prüfung per in_array() vornehmen.