我一直在与Java的SecureRandom类一起工作,以生成盐用于以后的加密和密码散列(我为每个任务生成单独的盐)。我一直在使用的代码如下:Java和密码学强随机数
//Init random number generator
secureRandom = SecureRandom.getInstance("SHA1PRNG");
secureRandom.setSeed(System.nanoTime());
//Create salts
secureRandom.nextBytes(bytAuthSalt);
secureRandom.nextBytes(bytEncryptionSalt);
现在,一切都很好,直到我开始真正验证我得到的值。对于应用程序的几个连续执行我的盐是:
[[email protected]
[[email protected]
[[email protected]
[[email protected]
[[email protected]
[[email protected]
我对这些数字似乎都大致顺序感到不安。在网络上进行了一些搜索之后,我再次重复了这些运行,而没有将它自己播种到相同的结果。
我唯一的猜测是什么可能是由于我正在为Android平台开发的事实。我知道他们有自己的密码提供者,但我没有任何例外。有任何想法吗?
在此先感谢。
如果我没有弄错,那将使用默认字符集来解释字节,而不是打印出原始字节。 OP不需要原始字节而不是ASCII等效字符? – 2011-01-13 16:49:08
@ RD01 - 但仍然会给OP一个很好的随机性视图。 – Rogach 2011-01-13 16:50:57