random_int() 是 php 7.0+ 提供的安全随机整数生成函数,基于操作系统加密随机源,适用于密钥、令牌等密码学场景;需捕获 randomexception 异常,不支持浮点/字符串参数,不可用 mt_rand() 替代。

用 random_int() 生成安全随机数,关键在于它基于操作系统的加密随机数生成器(如 Linux 的 /dev/urandom、Windows 的 CryptGenRandom),能抵御预测和重放攻击,适合密码学场景——比如生成密钥、令牌、盐值或验证码。
确保 PHP 版本 ≥ 7.0
random_int() 是 PHP 7.0 引入的内置函数,不依赖扩展,无需手动安装或配置。低于该版本无法使用,也不能用 mt_rand() 或 rand() 替代——它们不安全,可被预测。
正确调用:指定整数范围
语法为 random_int(int $min, int $max),返回闭区间 [$min, $max] 内的随机整数。注意:
- 必须传入两个整数参数,不能是浮点数或字符串
- $min 可大于 $max,函数会自动交换(但建议保持逻辑清晰,显式写对)
- 结果是真随机整数,不是“伪随机”,无需
srand()等初始化
示例:$token = random_int(100000, 999999); // 六位短信验证码$salt = random_int(0, 255); // 单字节盐值(常配合 pack('C', $salt) 使用)
处理异常:捕获 RandomException
当系统熵池枯竭(极罕见,多见于嵌入式或严重资源受限环境)或参数非法时,random_int() 抛出 Exception 的子类 RandomException。应显式捕获,避免程序崩溃:
try {<br>
$id = random_int(1, 1000);<br>
} catch (RandomException $e) {<br>
error_log('Secure RNG failed: ' . $e->getMessage());<br>
throw new RuntimeException('Unable to generate secure ID');<br>
}
不适用于直接生成字符串或大数组
random_int() 只返回单个整数。若需随机字符串(如 API token),应组合使用:
- 先用
random_int()生成字节长度的随机整数 - 再用
random_bytes()(同源安全函数)获取原始字节,转为十六进制或 Base64
例如:$bytes = random_bytes(16); // 16 字节加密安全随机串<br>
$token = bin2hex($bytes); // 得到 32 位小写十六进制字符串











