Unterschied zwischen java.util.Random und java.security.SecureRandom

Mein Team hat einen serverseitigen Code (in Java) erhalten, der zufällige Token generiert, und ich habe eine Frage dazu -

Der Zweck dieser Token ist ziemlich heikel - sie werden für Sitzungs-IDs, zum Zurücksetzen von Passwörtern usw. verwendet. Sie müssen daher kryptografisch zufällig sein, damit niemand sie erraten oder brutal erzwingen kann. Das Token ist "long", also 64 Bit lang.

Der Code verwendet derzeit diejava.util.Random Klasse, um diese Token zu generieren. Die Dokumentation ([http://docs.oracle.com/javase/7/docs/api/java/util/Random.html[1]) zumjava.util.Random gibt eindeutig Folgendes an:

Instanzen von java.util.Random sind nicht kryptografisch sicher. Verwenden Sie stattdessen SecureRandom, um einen kryptografisch sicheren Pseudozufallszahlengenerator für sicherheitsrelevante Anwendungen zu erhalten.

Die Art und Weise, wie der Code derzeit verwendet wirdjava.util.Random ist dies - Es instanziiert diejava.security.SecureRandom Klasse und verwendet dann dieSecureRandom.nextLong() Methode, um den Startwert zu erhalten, der zum Instanziieren desjava.util.RandomKlasse. Dann nutzt esjava.util.Random.nextLong() Methode zum Generieren des Tokens.

Also meine Frage jetzt - Ist es angesichts der Tatsache, dass diejava.util.Random wird ausgesät mitjava.security.SecureRandom? Muss ich den Code ändern, damit er verwendet wird?java.security.SecureRandom ausschließlich, um die Token zu generieren?

Derzeit ist der Code-Startwert derRandom einmal beim Start

Antworten auf die Frage(7)

Ihre Antwort auf die Frage