PHP 7 - CSPRNG


在 PHP 7 中,引入了以下两个新函数,用于以跨平台方式生成加密安全的整数和字符串。

  • random_bytes() - 生成加密安全的伪随机字节。

  • random_int() - 生成加密安全的伪随机整数。

随机字节()

random_bytes() 生成适合加密使用的任意长度的加密随机字节字符串,例如在生成盐、密钥或初始化向量时。

句法

string random_bytes ( int $length )

参数

  • length - 应返回的随机字符串的长度(以字节为单位)。

返回值

  • 返回一个字符串,其中包含请求的加密安全随机字节数。

错误/异常

  • 如果找不到适当的随机源,则会抛出异常。

  • 如果给定的参数无效,则会抛出TypeError 。

  • 如果给出的字节长度无效,则会抛出错误。

例子

<?php
   $bytes = random_bytes(5);
   print(bin2hex($bytes));
?>

它产生以下浏览器输出 -

54cc305593

random_int()

random_int()生成加密随机整数,适合在无偏结果至关重要的情况下使用。

句法

int random_int ( int $min , int $max )

参数

  • min - 要返回的最小值,必须是PHP_INT_MIN或更高。

  • max - 要返回的最高值,必须小于或等于PHP_INT_MAX

返回值

  • 返回从最小值到最大值(含)范围内的加密安全随机整数。

错误/异常

  • 如果找不到适当的随机源,则会抛出异常。

  • 如果给定的参数无效,则会抛出TypeError 。

  • 如果 max 小于 min,则会抛出错误。

例子

<?php
   print(random_int(100, 999));
   print("");
   print(random_int(-1000, 0));
?>

它产生以下浏览器输出 -

614
-882