openssl_random_pseudo_bytes
(PHP 5 >= 5.3.0, PHP 7, PHP 8)
openssl_random_pseudo_bytes — 產生一個偽隨機位元組串
說明
openssl_random_pseudo_bytes(int
$length
, bool &$crypto_strong
= ?): string
產生一個偽隨機位元組串 string ,位元組數由 length
參數指定。
通過 crypto_strong
參數可以表示在產生隨機位元組的過程中是否使用了強加密演算法。返回值為false
的情況很少見,但已損壞或老化的有些系統上會出現。
參數
-
length
-
所需位元組串的長度,必須為正整數。PHP會試著將該參數轉換為非空整數來使用它。
-
crypto_strong
-
如果傳遞到該函式中,將會儲存為一個 boolean 值來表明是否使用了「強加密」,如果被用於GPG和密碼之類的將返回
true
, 否則返回false
返回值
成功,返回產生的位元組串 string , 或者在失敗時返回 false
.
範例
示例 #1 openssl_random_pseudo_bytes() 範例:
<?php
for ($i = -1; $i <= 4; $i++) {
$bytes = openssl_random_pseudo_bytes($i, $cstrong);
$hex = bin2hex($bytes);
echo "Lengths: Bytes: $i and Hex: " . strlen($hex) . PHP_EOL;
var_dump($hex);
var_dump($cstrong);
echo PHP_EOL;
}
?>
以上例程的輸出類似於:
Lengths: Bytes: -1 and Hex: 0 string(0) "" NULL Lengths: Bytes: 0 and Hex: 0 string(0) "" NULL Lengths: Bytes: 1 and Hex: 2 string(2) "42" bool(true) Lengths: Bytes: 2 and Hex: 4 string(4) "dc6e" bool(true) Lengths: Bytes: 3 and Hex: 6 string(6) "288591" bool(true) Lengths: Bytes: 4 and Hex: 8 string(8) "ab86d144" bool(true)
參見
- random_bytes() - Generates cryptographically secure pseudo-random bytes
- bin2hex() - 函式把包含數據的二進制字串轉換為十六進制值
- crypt() - 單向字串雜湊
- mt_rand() - 產生更好的隨機數
- uniqid() - 產生一個唯一ID