偽隨機(jī)數(shù)產(chǎn)生器CSPRNG

2018-10-31 09:18 更新

CSPRNG 即偽隨機(jī)數(shù)產(chǎn)生器,作為一個(gè)工具,常用的算法有 MD5 或者 SHA1 等。

在 PHP7 中,引入了以下兩個(gè) CSPRNG 函數(shù),通過跨平臺(tái)方式生成加密安全的整數(shù)和字符串。

  • random_bytes() - 生成加密安全的偽隨機(jī)字節(jié)。
  • random_int() - 生成加密安全的偽隨機(jī)整數(shù)。

random_bytes()

random_bytes()生成適用于加密使用的任意長(zhǎng)度的加密隨機(jī)字節(jié)串,例如生成 salt,密鑰或初始化向量。

語法

string random_bytes ( int $length )

參數(shù)

  • length - 應(yīng)以字節(jié)為單位返回的隨機(jī)字符串的長(zhǎng)度。

返回值

  • 返回一個(gè)包含所請(qǐng)求的加密安全隨機(jī)字節(jié)數(shù)的字符串。

錯(cuò)誤/異常

  • 如果找不到適當(dāng)?shù)碾S機(jī)來源,將拋出異常。
  • 如果給出無效參數(shù),將拋出 TypeError。
  • 如果給定了無效的字節(jié)長(zhǎng)度,則會(huì)拋出錯(cuò)誤。

示例

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

它產(chǎn)生以下瀏覽器輸出:

54cc305593

random_int()

random_int()random_int()生成加密隨機(jī)整數(shù),適合在無偏差結(jié)果至關(guān)重要的情況下使用。

語法

int random_int ( int $min , int $max )

參數(shù)

  • min - 要返回的最低值,必須為 PHP_INT_MIN 或者更高。
  • max -要返回的最高值,這必須小于或等于 PHP_INT_MAX。

返回值

  • 返回一個(gè)加密安全的隨機(jī)整數(shù),范圍從 min 到 max(含)。

錯(cuò)誤/異常

  • 如果找不到適當(dāng)?shù)碾S機(jī)性來源,異常將被拋出。
  • 如果給出了無效的參數(shù),將拋出 TypeError。
  • 如果 max 小于 min,則會(huì)拋出錯(cuò)誤。

示例

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

它產(chǎn)生以下瀏覽器輸出:

614
-882
以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)