Does the Android implementation of SecureRandom produce true random numbers?
我已经阅读过,一般来说,SecureRandom的一些实现可能会产生真正的随机数。
特别是,Android文档说
instances of this class will generate an initial seed using an internal entropy source, such as
/dev/urandom
号
但这是否意味着它将产生真正的随机数(即,而不是伪随机数)?
如果我用这种方式在Android中使用
1 |
…当我调用
或者产出可能更多(或更少?)随机,如果我每次都通过这样做获得输出:江户十一〔二〕号?
"真"和"伪随机"随机数对不同的人来说意味着很多不同的事情。最好避免这些。
如果你问
如果你有时间的话,你可能会想读我关于整个问题的文章。
根据Android开发者文档:
(SecureRandom) complies with the statistical random number generator tests specified in FIPS 140-2, Security Requirements for Cryptographic Modules, section 4.9.1
号
然而,同样的警告也适用于Android,就像Java一样:
Many SecureRandom implementations are in the form of a pseudo-random number generator (PRNG), which means they use a deterministic algorithm to produce a pseudo-random sequence from a true random seed. Other implementations may produce true random numbers, and yet others may use a combination of both techniques.
号
因此,简短的回答是:这取决于实现,但是如果您对FIPS 140-2满意,那么SecureRandom就足以满足您的目的了。
关键的答案是,由Linux内核定义的
根据内核文档,除了"长寿命[加密]密钥",