rand() ist meines Wissens keine zuverlässige Quelle für Zufallszahlen zur Verwendung in kryptografischen Verfahren.
Wen es interessiert, wie der Salt bei password_compat berechnet wird:
1. Wenn mcrypt_create_iv() verfügbar ist, wird das verwendet mit /dev/urandom als Quelle
2. Alternativ openssl_random_pseudo_bytes()
3. Alternativ wird /dev/urandom direkt ausgelesen
4. Alternativ wird mt_rand() verwendet (nicht nur ASCII, sondern 0-255)
Dieser Bytestream wird dann base64-enkodiert.
Wenn ich das richtig sehe, verwendet die C-Implementierung von password_hash auf unixoiden Systemen direkt /dev/urandom.
Mathias