我一直在使用Java的SecureRandom类进行一些工作,以生成用于以后的加密和密码哈希的盐(我为每个任务生成单独的盐)。我一直在使用的代码如下:

//Init random number generator
secureRandom = SecureRandom.getInstance("SHA1PRNG");
secureRandom.setSeed(System.nanoTime());

//Create salts
secureRandom.nextBytes(bytAuthSalt);
secureRandom.nextBytes(bytEncryptionSalt);


现在,一切都进行得很好,直到我开始实际验证我得到的值为止。对于该应用程序的几个顺序执行,我的想法是:

[B@43d55dd8
[B@43d55b58
[B@43d55b50
[B@43bd0cc8
[B@43db0b08
[B@43bd0f50


这些数字似乎都是连续的,这使我感到不安。在网络上进行搜索后,我再次重复运行,但没有将其自己植入相同的结果。

我唯一可能会导致这种情况的猜测来自我为Android平台开发的事实。我知道他们有自己的密码提供程序,但我没有任何例外。有任何想法吗?

提前致谢。

最佳答案

看起来您正在打印出对字节数组的引用,而不是其内容。这就是为什么它们是顺序的,参考文献基本上是为您提供了JVM内存中的位置。在打印之前,将字节数组转换为字符串。

String saltContents = Arrays.toString(bytAuthSalt);


使用Arrays将数组转换为String会向您显示字节的原始值。

关于java - Java和加密强随机数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4682473/

10-12 00:11
查看更多