我想生成随机盐...
我这样做,但每次都得到相同的盐,即使我重新开始我的程序..我使用println检查
SecureRandom random = SecureRandom.getInstance("NativePRNGBlocking");
byte[] salt = new byte[32];
random.nextBytes(salt);
System.out.println(salt);
return salt;
如何生成随机盐?我想为每个用户提供一个单独的盐。
答案 0 :(得分:1)
salt数组中的字节实际上是不同的,至少除非NativePRNGBlocking实现被破坏。我认为问题出在你的检查中。字节数组的toString方法不会打印数组中的值,因此以这种方式打印salt数组是没用的。尝试打印单个值:
for(byte b: salt) {
System.out.print(b + " ");
}
或者您可以在调试器中检查它们。
答案 1 :(得分:0)
SecureRandom类支持“SHA1PRNG”伪随机数生成器算法。
尝试以下代码,它对我来说很好,并且始终是独一无二的。
SecureRandom sr = SecureRandom.getInstance("SHA1PRNG");
//Create array for salt
byte[] salt = new byte[32];
//Get a random salt
sr.nextBytes(salt);
//return salt
System.out.println( salt.toString());
希望它能解决您的问题。