【发布时间】:2023-04-06 10:44:02
【问题描述】:
我试图根据种子值每次都获得相同的盐值。这是我的代码
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);
是否有解决方法正确获取相同的字节?
【问题讨论】:
-
您似乎缺少“SecureRandom”中的“Secure”...
-
@BrettOkken 我了解secureRandom 提供了更好的安全性,但对于我的应用程序而言,每次为哈希函数的给定输入生成相同的哈希结果非常重要。这就是为什么我想得到相同的盐的原因