PHP random_bytes() 函数生成加密安全的伪随机字节。这适合加密使用,例如生成盐、密钥或初始化向量时。
用于此函数的随机性来源如下:
- 在 Windows 上, CryptGenRandom() 将始终被使用。从 PHP 7.2.0 开始,将始终使用 CNG-API。
- 在 Linux 上,将使用 getrandom(2) 系统调用如果可用。
- 在其他平台上,将使用 /dev/urandom。
- 如果上述来源均不可用,则会出现异常
语法
random_bytes(length)
参数
length | 必填。 指定应返回的随机字符串的长度(以字节为单位)。 |
返回值
返回包含以下内容的字符串:请求的加密安全随机字节数。
异常
- 如果找不到适当的随机源,则会抛出异常。
- 如果给出的参数无效,将抛出 TypeError。
- 如果给出无效的长度字节,将抛出 Error。
示例:random_bytes() 示例
下面的示例显示了random_bytes()函数的用法。
<?php
//加密生成
//安全伪随机字节
//指定字节数
$byte1 = random_bytes(5);
var_dump(bin2hex($byte1));
$byte2 = random_bytes(6);
var_dump(bin2hex($byte2));
$byte3 = random_bytes(7);
var_dump(bin2hex($byte3));
?>
上述代码的输出将是类似于:
string(10) "05867f17d7"
string(12) "3be97103c587"
string(14) "06bb66526d2a1a"