在 android 和 windows 中使用 sha1prng 给出不同的序列

Ash*_*win 3 java android

我在我的 android 程序和 java 程序中都使用了 sha1prng 作为伪随机数生成器算法。我用相同的值播种了它们。

但是android生成的sequesnce和java生成的不一样。为什么会发生这种情况以及解决此问题的方法是什么?

Rub*_*max 5

我认为这是因为 Windows 和 Android 上的 SHA1PRNG 实现不同。Android 使用 Crypto 作为提供程序,而 Windows SDK 使用 Sun JCE 提供程序作为 SHA1PRNG 实现。即使在不同版本的 JDK 中,具有相同种子的输出序列也有所不同,正如此处所讨论的:http : //www.derkeiler.com/Newsgroups/sci.crypt/2006-04/msg00765.html。对于 SHA1PRNG 的不同实现,您可能需要查看此链接:http : //www.cigital.com/justice-league-blog/2009/08/14/proper-use-of-javas-securerandom/