使用securerandom生成随机Salt

时间:2014-07-30 17:27:18

标签: random byte salt

我想生成随机盐...

我这样做,但每次都得到相同的盐,即使我重新开始我的程序..我使用println检查

    SecureRandom random = SecureRandom.getInstance("NativePRNGBlocking");

    byte[] salt = new byte[32];
    random.nextBytes(salt);

    System.out.println(salt);

    return salt;

如何生成随机盐?我想为每个用户提供一个单独的盐。

2 个答案:

答案 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());

希望它能解决您的问题。