Moin!
EXTREM schlechte Idee. Das gleiche gilt für Konstrukte mit microtime(). Stefan Esser hat in seinem Blog dargelegt, warum manuelles Initialisieren des Zufallszahlgenerators eine extrem schlechte Idee ist (englischer Link).
Wenn Du den Zufallszahlgenerator dann auch noch mit einer bekannten oder zumindest extrem leicht zu erratenden Größe initialisierst (der aktuellen Zeit), dann führt das dazu, dass die Zahlen vorhersagbar sind. Wenn man den Zufallszahlgenerator nur dazu nutzt, um zum Beispiel auf der Startseite "zufällig" andere Artikel hervorzuheben, dann ist das noch in Ordnung. Wenn Du damit allerdings etwas sicherheitskritisches Programmieren willst (Dein Code sieht nach einem Passwortgenerator aus, das ist sicherheitskritisch), dann solltest Du auf *jeden* Fall die Finger von so etwas lassen.
Ich möchte hervorheben, dass insbesondere der Abschnitt "The Art of Cross-Application Attacks" lesenswert ist. Das Initialisieren des Zuffi-Generators hat Auswirkungen auf den gesamten Server, nicht nur auf das einzelne Skript: Weil phpBB2 den Generator unsachgemäß initialisiert und danach auch noch Informationen über die generierten Zufallszahlen nach außen gelangen läßt, wird plötzlich Wordpress angreifbar, welches für sich allein genommen keine Initialisierung vornimmt und vernünftig arbeiten würde, wenn es neue Passworte generiert.
Aus den Kommentaren (Nr. 624 und 625) ist zu entnehmen, dass PHP 5.3 eine neue Zufallszahlenfunktion zur Verfügung stellen soll, die den Generator von OpenSSL nutzt, um qualitativ hochwertige Zufallszahlen zu erzeugen.
Die Diskussion auf der php.internals-Liste hat über den Fortschritt dieses Vorhabens aber noch keine wirklich gute Auskunft gegeben. Schließlich würden alle alten Applikationen davon profitieren, wenn die bisherigen Funktionen einfach besseren Zufall ausliefern würden, und das unselige srand() einfach nichts weiter tun würde.
- Sven Rautenberg
"Love your nation - respect the others."