PHP 随机函数

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"