PHP 7 CSPRNG


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

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

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

random_bytes()

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