伪随机数产生器CSPRNG
CSPRNG 即伪随机数产生器,作为一个工具,常用的算法有 MD5 或者 SHA1 等。
在 PHP7 中,引入了以下两个 CSPRNG 函数,通过跨平台方式生成加密安全的整数和字符串。
- random_bytes() - 生成加密安全的伪随机字节。
- random_int() - 生成加密安全的伪随机整数。
random_bytes()
random_bytes()生成适用于加密使用的任意长度的加密随机字节串,例如生成 salt,密钥或初始化向量。
语法
string random_bytes ( int $length )
参数
- length - 应以字节为单位返回的随机字符串的长度。
返回值
- 返回一个包含所请求的加密安全随机字节数的字符串。
错误/异常
- 如果找不到适当的随机来源,将抛出异常。
- 如果给出无效参数,将抛出 TypeError。
- 如果给定了无效的字节长度,则会抛出错误。
示例
<?php
$bytes = random_bytes(5);
print(bin2hex($bytes));
?>
它产生以下浏览器输出:
54cc305593
random_int()
random_int()random_int()生成加密随机整数,适合在无偏差结果至关重要的情况下使用。
语法
int random_int ( int $min , int $max )
参数
- min - 要返回的最低值,必须为 PHP_INT_MIN 或者更高。
- max -要返回的最高值,这必须小于或等于 PHP_INT_MAX。
返回值
- 返回一个加密安全的随机整数,范围从 min 到 max(含)。
错误/异常
- 如果找不到适当的随机性来源,异常将被抛出。
- 如果给出了无效的参数,将抛出 TypeError。
- 如果 max 小于 min,则会抛出错误。
示例
<?php
print(random_int(100, 999));
print("");
print(random_int(-1000, 0));
?>
它产生以下浏览器输出:
614
-882