使用java的securerandom获取确定性值

时间:2014-08-07 12:39:45

标签: java hash salt

我每次都试图获得相同的盐值,具体取决于种子值。这是我的代码

SecureRandom sr = new SecureRandom(seed.getBytes());
byte[] salt = new byte[32];
sr.nextBytes(salt);

但是,每次运行时我都会得到不同的值。我做错了什么是缺少什么?

更新

好的我已经尝试使用random而不是secureRandom并使用长种子获取字节但我每次仍然得到不同的值。但是,当我更改它以尝试获取nextInt时,我能够获得相同的值。

Random rand = new Random(Long.parseLong(seed, 36));   
byte[] salt = new byte[32];
rand.nextBytes(salt); 

是否正确地获得了相同的字节?

1 个答案:

答案 0 :(得分:2)

这是故意的。 SecureRandom尝试使用entrophy来获得真正的随机性,顺便说一句,这可能很昂贵。无论你从哪个盐开始,它总会返回不同的值。

如果您想要确定性值,请改用Random。