【发布时间】:2015-07-12 07:09:48
【问题描述】:
我正在编写一个抽奖程序,其中人们有一些门票,这些门票由 1 到 100 范围内的自然数标记。
我用mt_rand(1,100)生成中奖号码,然后输出到网站,大家可以看到。
现在我做了一些研究,从 Mersene wiki 文章中发现:
观察足够数量的迭代(在 MT19937 的情况下为 624,因为这是产生未来迭代的状态向量的大小)允许人们预测所有未来的迭代。
mt_rand() MT19937使用的是当前版本吗?
如果是这样,我该怎么做才能使我生成的数字在密码学上更加安全?
提前致谢:-)
【问题讨论】:
-
不要尝试打磨粪便,使用安全的 rng 而不是
mt_rand。 -
大声笑,“不要试图擦亮粪便”。另外,觉得值得一提的是an example of using a poor RNG for a gambling application。抱歉,没有魔法精灵粉可以洒在 RNG 上以确保加密安全。也不要切换到lcg_value。我推荐使用openssl_random_pseudo_bytes。
-
我真的希望那是讽刺
标签: php security random cryptography