首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SecureRandom的安卓实现会产生真正的随机数吗?

问SecureRandom的安卓实现会产生真正的随机数吗?
EN

Stack Overflow用户
提问于 2014-09-12 21:28:54
回答 3查看 6.2K关注 0票数 15

总的来说,我读过这篇文章,SecureRandom的某些实现可能产生真正的随机数。。

特别是,Android文档说

该类的实例将使用内部熵源(如/dev/urandom )生成初始种子。

但这是否意味着它将产生真正的随机数(即,而不是伪随机数)?

如果我以这种方式在机器人上使用SecureRandom ..。

代码语言:javascript
复制
SecureRandom sr = new SecureRandom();

...will --每当我调用sr.nextBoolean()时,都会得到一个真正随机的输出

或者输出可能更多(或更少)?如果我通过每次执行以下操作获得输出,则随机:new SecureRandom().nextBoolean()

EN

回答 3

Stack Overflow用户

发布于 2014-09-13 09:55:33

“真”和“伪随机数”对不同的人来说意味着很多不同的东西。最好避免这样做。

/dev/urandom的代表很差,因为人们不理解它和/dev/random之间的区别(比你想象的要差得多)。

如果您在问/dev/urandom的种子是否会损害SecureRandom用于加密目的的适宜性,那么答案是响亮的“否”。

如果您有一些时间,您可能想要阅读我的文章关于整个问题。

票数 5
EN

Stack Overflow用户

发布于 2019-04-10 07:41:23

根据Android开发人员文档

(SecureRandom)符合FIPS140-2中规定的统计随机数生成器测试,密码模块的安全要求,第4.9.1节

然而,同样的警告也适用于Android和Java:

许多SecureRandom实现都是以伪随机数生成器(PRNG)的形式实现的,这意味着它们使用确定性算法从真正的随机种子产生伪随机序列。其他实现可能产生真正的随机数,而其他实现则可能使用这两种技术的组合。

因此,简单的回答是:这取决于实现,但如果您对FIPS 140-2满意,那么SecureRandom在法律上就足以满足您的需要。

票数 1
EN

Stack Overflow用户

发布于 2014-09-13 00:10:36

关键的答案是,/dev/urandom,作为由linux内核定义的,保证不会阻塞。强调的是在产生足够的熵时不要拖住用户。如果android文档说他们使用/dev/urandom进行初始化,并且内核中没有足够的熵来提供随机数,那么内核将返回到伪随机算法。

根据内核文档,除了“长寿命加密密钥”之外,几乎所有用途都可以使用/dev/urandom。考虑到您的预期用途,我怀疑android将证明对您的目的来说是足够随机的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25817133

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档