作者chan15 (ChaN)
看板PHP
标题[请益] 乐透系统乱数扰乱的方式
时间Mon Feb 15 15:50:07 2016
各位好,想请教一下要写类似运彩的开奖,像是大乐透,用 mt_rand 去乱数的话
据说到一定的数量的话会有规律,不知道有没有什麽更好的扰乱方式
让开出来的号码更为混淆,感谢
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 60.251.121.168
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/PHP/M.1455522609.A.696.html
2F:→ LPH66: mt_rand 要到有规律要很久很久很久 (周期是 2^19937-1) 02/15 16:22
3F:→ LPH66: 所以就放心用吧 02/15 16:23
4F:→ chan15: 那 mt_rand + shuffle + array_rand 如何 02/15 16:38
5F:→ chan15: 咦,不对,mt_rand 是 range 取 1 02/15 16:39
7F:推 GALINE: sha1(microtime(true) . mt_rand()) 02/16 01:06
8F:→ GALINE: 若是加密需要高安全性或博弈扯到大钱,那该用更安全的作法 02/16 01:07
9F:→ GALINE: 读取 /dev/urandom 或 /dev/random,PHP7 用 random_int() 02/16 01:07
10F:→ GALINE: 然後 PHP7 的 random 系列有人用实作 PHP5 可用的版本 02/16 01:08
12F:推 GALINE: mt_rand() 的攻击有人给出说明,不过我数学不好跟不太上.. 02/16 01:12
14F:→ chan15: 请教一下 sha1 的原因为何 02/16 08:31
15F:→ mmis1000: 理论上,sha1是无法从输出猜测输入的 02/16 11:12
16F:推 GALINE: 不过sha1出来是40位数的hex(共160bit),转整数要花点功夫 02/16 13:09
17F:→ GALINE: 转的时候要小心溢位,PHP整数是32或64bit 02/16 13:10
18F:→ GALINE: 还要注意是 unsigned 转成 signed...突然觉得这也满麻烦的 02/16 13:11