PHP什么时候生成mt_rand()的种子


When will PHP generate the seed for mt_rand()

当服务器重新启动时,PHP会生成种子(在mt_rand()中使用)吗?PHP将这个值存储在哪里?

我刚刚发现mt_rand()是不安全的,并试图为它创建一个概念验证

非常感谢!

mt_rand()在请求中第一次使用时会自动种子化,种子基于PID、当前时间戳和PHP的内部LCG(线性一致生成器)。。。。您可以在脚本执行的任何时候使用mtrand()覆盖它,以便使用自己的种子进行种子重设。

请注意,正如PHP文档中所述,mt_rand()不适用于加密应用程序。如果您想要加密强度的随机性,请使用有文档记录的加密强度生成器。

我刚刚发现mt_rand()是不安全的,并试图为它创建一个概念验证

请参阅OpenWall的php_mt_seed。

如果你想要一个替代品:

  • PHP 7:random_int()
  • PHP 5:random_compat
  • PHP 4:放弃所有的希望,2015年进入这里的你们