我试图使用加密安全随机数Java和使用下面的代码段创建一个SecureRandom对象,以查看其供应商和算法生成:BouncyCastle有SecureRandom服务吗?
Provider prov=new org.spongycastle.jce.provider.BouncyCastleProvider();
Security.insertProviderAt(prov, 1);
SecureRandom sr=new SecureRandom();
srProvider=sr.getProvider().toString();
srAlgorithm=sr.getAlgorithm();
(海绵状城堡充气城堡相当于为Android所作罗伯托Tyley - https://github.com/rtyley)
当我显示提供商和算法,它表明:加密版本1.0 SHA1PRNG
让我惊讶的是,如果它被安装在代码中第一个提供供应商甚至没有Spongycastle 。我想问你a)是不是在Spongy Castle(或Bouncy Castle)实施SecureRandom。 B)什么 “加密版本1.0” 到底是(我的意思是它是Sun JCE提供还是什么?)
谢谢...
鲁维
谢谢尼古拉。只是想知道SHA1PRNG是否有替代选择。在随机检查工具中检查SHA1PRNG和其他人会很好。 – 2012-04-22 17:23:39
至少在ICS(股票Galaxy Nexus)上是唯一的'SecureRandom'实现。 SHA1PRNG是一种PRNG,因此它只与您给它的种子一样好。它从'/ dev/urandom'播种,所以它可能不是那么好。再次,这是ICS,但我怀疑它会在其他版本上有任何不同。 '/ dev/random'在Android上可能会很慢,所以我想这就是为什么它没有被使用。如果你真的使用工具进行检查,请将它链接到这里。 – 2012-04-23 01:52:43
@ Nikolay Elenkov:谢谢你的信息。我如何才能看到我的Android设备上是否使用dev/random或dev/urandom作为种子源,以及如何在代码中动态更改它? – 2012-05-06 09:51:51