Ich beschäftige mich momentan mit einigen Problemen der Computersicherheit an der Schule und interessiere mich für die allgemeine Programmierung von öffentlichen Präferenzen, Gewohnheiten, Ideen usw. Wenn Sie einen Zufallszahlengenerator oder Extraktor verwenden müssen, welchen wählen Sie? Warum wählst du es? Die mathematischen Eigenschaften, bereits als Paket implementiert oder aus welchem Grund? Schreibst du dein eigenes oder verwendest ein Paket?Warum verwenden Sie einen Zufallsgenerator/-extraktor?
Antwort
Sie wissen, dass wenn dieser Link stirbt, diese Antwort völlig nutzlos ist. – tvanfosson
Es ist ein Server, der Ihnen Bits gibt. Wenn die Verbindung abbricht, ist der Server weg, also wäre die Antwort natürlich nutzlos. –
Wenn Rechenzeit kein Objekt ist, dann können Sie mit Blum Blum Shub (http://en.wikipedia.org/wiki/Blum_blum_shub) nichts falsch machen. Informell gesprochen ist es mindestens so sicher (schwer vorhersehbar) wie eine ganzzahlige Faktorisierung.
dev/random
, oder gleichwertig auf Ihrer Plattform.
Es gibt Bits aus einem Entropie-Pool zurück, die von Gerätetreibern gespeist werden. Sie müssen sich keine Gedanken über mathematische Eigenschaften machen.
Wenn Sie nach einem kryptografisch sicheren PRNG suchen, ist die wiederholte Anwendung eines sicheren Hash auf ein großes Seed-Array in der Regel der richtige Weg. Erfinden Sie nicht Ihren eigenen Algorithmus, obwohl, gehen Sie für eine Version von Fortuna oder etwas anderes einigermaßen gut überprüft.
Die Schlüssel für die Verschlüsselung von Telefongesprächen zwischen Präsidenten der USA und der UdSSR wurden angeblich aus kosmischen Strahlen erzeugt. Wir haben es im Physiklabor in der Universität überprüft - ihre Energien ergeben eine echte Gauß-Verteilung. ;-) Also für die beste Verschlüsselung sollten Sie diese verwenden, da solche Zufallsfolgen nicht wiedergegeben werden können. Es sei denn natürlich, dein Gegner baut einen Teilchenbeschleuniger in der Nähe deines Zufallszahlengenerators.
Ah ... über Computer ... Nun, erwerben Sie einen Stream, der von etwas Physischem kommt, nicht berechnet./dev/random ist eine einfache Lösung, aber Ihr handgemachter Geigerzähler, der an USB angeschlossen ist, würde die beste Zufälligkeit aller Zeiten bieten.
Für ein kleines Schulprojekt würde ich verwenden, was auch immer das OS für die Generierung von Zufallszahlen bietet.
Für eine ernsthafte Sicherheitsanwendung (zB: COMSEC -level Verschlüsselung), verwende ich einen Hardware-Zufallszahlengenerator. Reine Algorithmen ohne Hardwarezugriff per Definition produzieren keine Zufallszahlen.
- 1. Warum einen Entity Manager verwenden?
- 2. Warum verwenden Sie document.write?
- 3. Warum würden Sie einen Contexpr auf einem Konstruktor verwenden?
- 4. Google play sagt: "Sie müssen einen anderen Paketnamen verwenden" - warum?
- 5. Warum würden Sie einen unveränderlichen Wert in einem Wörterbuch verwenden?
- 6. Warum sollten Sie mehr als einen Konstruktor verwenden?
- 7. Srsly, warum verwenden Sie Mutatoren?
- 8. Warum würden Sie einen Bereich verwenden, wenn Sie normale Ruby-Klassenmethoden verwenden könnten?
- 9. Warum kopieren Sie einen Feldverweis auf einen lokalen, bevor Sie ihn in einer Schleife verwenden?
- 10. Ruby: warum verwenden Sie # nicht /?
- 11. warum verwenden Sie externes Javascript?
- 12. Warum würden Sie string.toString() verwenden?
- 13. Warum würden Sie Umask verwenden?
- 14. Warum verwenden Sie angularfire $ destroy()?
- 15. einen Konstruktor Verwenden Sie einen Stapel
- 16. Verwenden Sie zufällig einen Vergleichsoperator?
- 17. Verwenden Sie einen CTE viele Male
- 18. Warum verwenden Sie Listener über Funktionsaufrufe?
- 19. Warum verwenden Sie select() anstelle von sleep()?
- 20. Warum verwenden Sie sqlalchemy deklarative API?
- 21. Übergeben Sie einen Vektor als Argument und verwenden Sie ihn, warum stürzt er ab?
- 22. Warum kopieren Sie die SQLite-DB, bevor Sie sie verwenden?
- 23. Warum verwenden Sie NoSQL über materialisierte Ansichten?
- 24. Warum verwenden Sie keine GPUs als CPU?
- 25. Warum verwenden Sie $ 1 auf codeIgniter Route.
- 26. Warum verwenden Sie $ {@ + "$ @"} in Shell-Skripten?
- 27. Wie (und warum) verwenden Sie Kontraste?
- 28. Warum verwenden Sie string :: iterator statt index?
- 29. Warum Asprintf verwenden?
- 30. Was sind Ausdrucksbäume, wie verwenden Sie sie und warum würden Sie sie verwenden?
Es gibt * Stapel * von PRNG Fragen bereits. Was macht diesen Unterschied? – dmckee
http://stackoverflow.com/questions/1266261/what-is-a-good-fast-prng-non-cryptographics-secure http://StackOverflow.com/Questions/167735/Fast-Pseudo-Random-Number- generator-for-procedural-content http://stackoverflow.com/questions/1247129/fast-generation-of-random-set-monte-carlo-simulation und so weiter. Versuchen Sie diese Suche: http://stackoverflow.com/questions/tagged/random-number-generator – dmckee
Keiner dieser drei so genannten Duplikate fordert eine sichere PRNG. Das erste sagt explizit Nicht-Krypto, das dritte ist für Monte-Carlo-Simulation und das mittlere ist für die Erzeugung von Landschaften. Die Sorgen sind völlig anders. –