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));
    ?> 
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    上述代码的输出将是类似于:

    string(10) "05867f17d7"
    string(12) "3be97103c587"
    string(14) "06bb66526d2a1a" 
    • 1
    • 2