Es ist akzeptabel anzunehmen, dass Zufallszahlen eindeutig sind, aber Sie müssen vorsichtig sein.
Angenommen, Ihre Zufallszahlen sind gleichmäßig verteilt, ist die Wahrscheinlichkeit einer Kollision ungefähr (n 2/2 ) / k, wobei n die Anzahl der von Ihnen generierten Zufallszahlen und k die Anzahl der möglichen Werte ist, die eine "Zufallszahl" annehmen kann.
Sie geben keine astronomisch unwahrscheinliche Zahl an, nehmen wir also 1 zu 2 30 (ungefähr eine Milliarde). Nehmen wir weiter an, Sie generieren 2 bis 30 Pakete (wenn jedes Paket ungefähr ein Kilobyte an Daten darstellt, bedeutet dies ungefähr ein Terabyte an Gesamtdaten, groß, aber nicht unvorstellbar). Wir brauchen eine Zufallszahl mit mindestens 2 89 möglichen Werten.
Erstens müssen Ihre Zufallszahlen groß genug sein. Eine 32-Bit-Zufallszahl kann maximal 2 32 mögliche Werte haben. Für einen ausgelasteten Server, der bei weitem nicht hoch genug ist.
Zweitens muss Ihr Zufallsgenerator einen ausreichend großen internen Zustand haben. Wenn Ihr Zufallszahlengenerator nur einen internen 32-Bit-Zustand hat, erhalten Sie, egal wie groß der Wert ist, den Sie daraus generieren, immer noch höchstens 2 32 mögliche Werte.
Drittens, wenn Sie möchten, dass die Zufallszahlen nicht nur innerhalb einer Verbindung, sondern verbindungsübergreifend eindeutig sind, muss Ihr Zufallszahlengenerator eine gute Ausgangsbasis haben. Dies gilt insbesondere dann, wenn Ihr Programm häufig neu gestartet wird.
Im Allgemeinen sind die "regulären" Zufallszahlengeneratoren in Programmiersprachen für eine solche Verwendung nicht geeignet. Die Zufallszahlengeneratoren, die von Kryptografiebibliotheken bereitgestellt werden, sind im Allgemeinen.