我每次都试图获得相同的盐值,具体取决于种子值。这是我的代码
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);
是否正确地获得了相同的字节?
答案 0 :(得分:2)
这是故意的。 SecureRandom尝试使用entrophy来获得真正的随机性,顺便说一句,这可能很昂贵。无论你从哪个盐开始,它总会返回不同的值。
如果您想要确定性值,请改用Random。