Signatur
Beschreibung
crypt_preferred_method() ist eine Hilfsfunktion aus dem PEAR-Paket Crypt_CBC bzw. aus älteren PEAR-Bibliotheken (insbesondere Auth), die das Präfix der stärksten auf dem aktuellen System verfügbaren crypt()-Methode ermittelt. Sie ist nicht Teil der PHP-Standardbibliothek, sondern eine PEAR-Funktion.
Die Funktion prüft der Reihe nach, ob das System Blowfish ($2y$), SHA-512 ($6$), SHA-256 ($5$) oder MD5 ($1$) unterstützt, und gibt das Präfix der stärksten verfügbaren Methode zurück. Dieses Präfix kann dann direkt an crypt() übergeben werden.
Typisch eingesetzt wird sie in Legacy-Projekten, die crypt() nutzen, aber automatisch die sicherste verfügbare Methode wählen möchten, ohne manuell alle Konstanten wie CRYPT_BLOWFISH zu prüfen.
Hinweis: Für neue Projekte sollte stattdessen password_hash() mit PASSWORD_DEFAULT verwendet werden, da diese Funktion moderner, sicherer und direkt in PHP integriert ist.
Rückgabewert
crypt()-Hash-Methode, z. B. $2y$ für Blowfish, $6$ für SHA-512 oder $1$ für MD5, abhängig von den auf dem System verfügbaren Methoden.Beispiele
Bevorzugtes crypt()-Präfix ermitteln
<?php
// Voraussetzung: PEAR Auth oder ähnliches Paket eingebunden
// require_once 'Crypt/CBC.php'; // oder entsprechende PEAR-Komponente
$prefix = crypt_preferred_method();
echo "Bevorzugtes Präfix: " . $prefix . PHP_EOL;
// Passwort hashen mit dem ermittelten Präfix
$salt = $prefix . substr(str_replace('+', '.', base64_encode(random_bytes(16))), 0, 22) . '$';
$hash = crypt('geheimesPasswort', $salt);
echo "Hash: " . $hash . PHP_EOL;
Moderne Alternative mit password_hash()
<?php
// Empfohlene Alternative zu crypt_preferred_method() + crypt()
$hash = password_hash('geheimesPasswort', PASSWORD_DEFAULT);
echo "Sicherer Hash: " . $hash . PHP_EOL;
// Verifikation
if (password_verify('geheimesPasswort', $hash)) {
echo "Passwort korrekt!" . PHP_EOL;
} else {
echo "Passwort falsch!" . PHP_EOL;
}
// Wichtig · Fallstricke
Sicherheitshinweis: crypt_preferred_method() stammt aus einer PEAR-Bibliothek und ist nicht Teil des PHP-Kerns. Für neue Projekte sollte ausschließlich password_hash() mit PASSWORD_BCRYPT oder PASSWORD_ARGON2ID verwendet werden, da diese Funktionen Salt-Generierung und Algorithmuswahl automatisch übernehmen und gegen Timing-Angriffe gesichert sind.
Deprecation: Die direkte Verwendung von crypt() gilt als veraltet (deprecated seit PHP 8.0 für einige Varianten). PEAR-basierte Hilfsfunktionen wie crypt_preferred_method() sind in modernem PHP-Code nicht mehr empfohlen.
Stellen Sie sicher, dass die entsprechende PEAR-Bibliothek installiert und eingebunden ist, bevor Sie diese Funktion aufrufen – andernfalls wird ein fataler Fehler ausgelöst.