问题在标题中,在这里很新,所以对网站还不太了解。 想要使用hash来创建“更多随机性”但尚未确定Java的Math.Random(),是否有可能破解它?
答案 0 :(得分:2)
如果您使用的是java.util.Random()
,则可以。看看这个Code
为了更好的安全性,您必须使用SecureRandom
,如下所示
SecureRandom secureRandomGenerator = SecureRandom.getInstance("SHA1PRNG");
但无法解决的最佳解决方案是使用Hardware for Random number generation.
编辑:
基于随机类似MersenneTwister的算法可以按Dan Petro
<{1}} article进行攻击
要使用的
CSPRNGs
(密码安全伪随机数生成器)是:
在类似Unix的系统上从/dev/urandom
读取
Java SecureRandom
类
.NET RNGCryptoServiceProvider
类
PHP openssl_random_pseudo_bytes()
函数
相反,要避免的随机数生成器的一些示例是:
libc rand()
功能
Java Random类
.NET Random类
PHP的rand()
和mt _ rand()
函数
请看托马斯·赫恩的article