rand() ist meines Wissens keine zuverlässige Quelle für Zufallszahlen zur Verwendung in kryptografischen Verfahren.
Das ist hier ziemlich egal.
Das denke ich nicht. rand() liefert m.W. vorhersehbare Zufallszahlen, wenn der Seed bekannt ist. Deshalb steht in der PHP-Doku auch groß und breit dran, dass man es nicht für Krypto verwenden soll. Jeder Artikel, den ich finde, rät dazu, in PHP nicht rand() oder mt_rand() für Initialisierungsvektoren oder Hash-Salts zu verwenden.
Noch einmal: Ich weiß nicht, warum man hier sämtliche Ratschläge von Experten ignorieren sollte. Warum man dezidierte Krypto-Bibliotheken wie OpenSSL und mcrypt ignorieren sollte. Warum man dezidierte Quellen für Pseudozufallszahlen wie /dev/urandom ignorieren sollte. Warum man ignorieren sollte, was in der PHP-Doku steht. Warum man ignorieren sollte, wie PHP es intern implementiert. Warum man ignorieren sollte, wie fertige PHP-Bibliotheken es implementieren. Warum man sich selbst etwas basteln sollte.
Mathias