PHP7 CSPRNG


在PHP7,以下兩個新的函式引入以產生一個跨平台的方式加密安全整數和字串。
  • random_bytes() - 生成加密安全偽隨機位元組。

  • random_int() - 生成加密安全偽隨機整數。

random_bytes()

random_bytes()適合於使用來生成密碼,密碼學隨機的任意長度的字串,如:生成 salt,金鑰或初始向量。

語法

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

返回值

  • 返回最小值(min)到最大(max)的範圍內,包括加密安全隨機整數。

錯誤/異常

  • 如果無法找到隨機性一個適當的源,將引發異常
  • 如果給定引數無效,TypeError 將被丟擲
  • 如果 max 小於 min 時,錯誤將被丟擲

範例

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

這將在瀏覽器產生以下輸出 -

614
-882