Moin,
PHPs md5() funktioniert nicht, oder wie soll ich das verstehen?
Nein, aber MD5 fügt selbst keinen Zufall hinzu. 2^32 mögliche Eingabewerte (bei zweiter Betrachtung: rand() spuckt sogar nur positive Zahlen aus, also ist das noch weniger) können nur 2^32 mögliche Ausgabewerte produzieren.
Möchtest Du das da oben noch einmal korrigieren?
Wieso sollte ich? Erinnerst du dich noch an Stochastik in der Schule? Du weisst schon, die Sache mit den Würfeln: Wenn du einen Würfel betrachtest, sind die Ergebnisse gleichverteilt - jede Zahl hat eine Wahrscheinlichkeit von 1/6. Wenn du mit zwei Würfeln würfelst und die Kombination betrachtest, sind sie immer noch gleichverteilt: Jede Kombination (wenn die Würfel markiert sind) hat eine Wahrscheinlichkeit von 1/36. Wenn du aber die Summe betrachtest, kriegst du eine Normalverteilung: 2 hat eine Wahrscheinlichkeit von 1/36 (genau wie 12), 7 aber zum Beispiel hat eine Wahrscheinlichkeit von 1/6. Da müsste ich mich schon sehr geirrt haben, wenn das plötzlich anders aussieht, bloß weil es um Integer geht.
Und naja, wenn ein Angreifer statt
Wahrscheinlichkeit Wahrscheinlichkeit
^ ^
| |
| | o°o
| | oo oo
|----------- |oo oo
+-----------> zahl das hier +-----------> zahl
kriegt, dann würde er natürlich zuerst die Zahlen aus der Mitte probieren. Zumal die Addition die Anzahl der Bits nicht vervielfältigt, sondern (wenn es wie vorgeschlagen 4 Zufallszahlen sind) nur 2 Bits davorhängt.
Da kenne ich den Code nicht, kann ich also nichts zu sagen.
Laut Doku soll man lieber mt_rand() benutzen, weil das schneller und besser als rand() ist.
--
Henryk Plötz
Grüße von der Ostsee