tzkr.net
当前位置:首页 >> php mt rAnD 漏洞 >>

php mt rAnD 漏洞

没有缺陷,本来就是“伪”随机数.不是用来做加密工具的,不用修复.mt_rand作为一般算数工具用. 密码级的随机数另用PHP7 random_bytes() PHP5.3 openssl_random_pseudo_bytes()

$flag=false; while(!$flag) { $id=mt_rand(1,40); if($id<11 || $id>30)$flag=true; }

很多老的 libc 的随机数发生器具有一些不确定和未知的特性而且很慢.PHP 的 rand() 函数默认使用 libc 随机数发生器.mt_rand() 函数是非正式用来替换它的.该函数用了 Mersenne Twister 中已知的特性作为随机数发生器,它可以产生随机数值的平均速度比 libc 提供的 rand() 快四倍. ---摘自php中文手册

RAND在某些平台下(例如 Windows)RAND_MAX 只有 32768.如果需要的范围大于 32768,那么指定 min 和 max 参数就可以生成大于 RAND_MAX的数了,或者考虑用 mt_rand() 来替代之. 很多老的 libc 的随机数发生器具有一些不确定和未知的特性而且很慢.PHP 的 rand() 函数默认使用 libc 随机数发生器.mt_rand() 函数是非正式用来替换它的.该函数用了 Mersenne Twister 中已知的特性作为随机数发生器,它可以产生随机数值的平均速度比 libc 提供的 rand() 快四倍.

$num = rand(1,31); if($num%2 == 0?1:0) exit('是偶数,中断执行'); 你是不知道怎么中断执行么 用exit就行了 .也可以是die,是exit的另一种写法

在32位系统中,函数返回值最大可达到2^16,64位系统可以达到2^32

rand() 使用这个函数<?php echo rand(0,20); //里面的数字改成你需要的?>

点是 PHP 的连接字符 相当于其他语言中的+ 意思是把返回的字串 连成一个字串再看看别人怎么说的.

楼上的太麻烦了&lt;?phpfunction norand($begin=0,$end=20,$limit=5){ $rand_array=range($begin,$end); shuffle($rand_array);//调用现成的数组随机排列函数 return array_slice($rand_array,0,$limit);//截取前$limit个}print_r(norand());?&gt;或者

这个有多种实现方式,如:1. rand(100000, 999999) //直接获取随机数,不过存在种子耗尽问题2. 循环6次,利用mt_rand生成随机数拼接3. 循环6次,每次从rand(0,9)中取值我的博客《PHP生成随机密码》中已经做了集成处理,可以参考看看.http://www.zjmainstay.cn/php-create-password

网站首页 | 网站地图
All rights reserved Powered by www.tzkr.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com