PHP 7 - CSPRNG

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

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

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

random_bytes()

random_bytes()生成一个任意长度的加密随机字节串,适用于加密用途,例如生成盐,键或初始化向量时.

语法

string random_bytes ( int $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 .

返回值

  • 返回加密安全随机整数,范围为min到max(包括).

错误/异常

  • 如果找不到合适的随机来源,将抛出异常.

  • 如果给出了无效参数,将抛出 TypeError .

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

示例

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

它产生以下浏览器输出 :

614
-882