Start · Sprachen · PHP · Referenz · crypt_preferred_method

crypt_preferred_method

Funktion

Gibt das Präfix der vom System bevorzugten <code>crypt()</code>-Hash-Methode zurück.

Kategorie: misc

Signatur

crypt_preferred_method(): string

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

Typ
string
Beschreibung
Das Präfix der bevorzugten 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;
Bevorzugtes Präfix: $2y$ Hash: $2y$...

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;
}
Sicherer Hash: $2y$... Passwort korrekt!

// 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.