SecureRandom spinnt?

Marfir

Aktives Mitglied
Hallo,

mir ist aufgefallen, dass etwas mit SecureRandom nicht zu stimmen scheint.

Java:
KeyGenerator kg = KeyGenerator.getInstance( "AES" );
SecureRandom sr = new SecureRandom("abcdefg".getBytes("UTF8"));
System.out.println("random: " + sr.nextInt());

Dieser Code sollte eigentlich immer den selben random ergeben, um dann z. B. mittels

Java:
kg.init( 128, sr );
SecretKey k  = kg.generateKey();

immer den selben Key erzeugen zu können. Unter Windows funktioniert dies auch tadellos. Aber unter Linux (Ubuntu 8) wird mit jedem Aufruf ein anderer int ausgespuckt. .setSeed bringt auch keinen Unterschied.

Sollte nicht der Secure Randrom Generator beim selben seed immer den gleichen random ausgeben, egal ob der Code unter Win, Linux, Mac etc. läuft (= Bug?)?
Gibt es event. eine andere Möglichkeit mittels des KeyGenerators immer den selben Key zu erzeugen? Der benötigt ja leider den SecureRandom dafür, der unter Linux etwas anderes macht als ich will...

Danke für eure Antworten! :)
 
G

Gast2

Gast
Füg mal [c]System.out.println(sr.getAlgorithm())[/c] ein. Windows verwendet SHA1PRNG, Linux NativePRNG.

So hast du auch in Linux immer die gleichen werte

Java:
KeyGenerator kg = KeyGenerator.getInstance( "AES" );
SecureRandom sr = SecureRandom.getInstance("SHA1PRNG");
sr.setSeed("abcdef".getBytes("UTF8"));
System.out.println("random: " + sr.nextInt());
 

Ähnliche Java Themen

Neue Themen


Oben