Php/docs/function.openssl-random-pseudo-bytes

来自菜鸟教程
跳转至:导航、​搜索

openssl_random_pseudo_bytes

(PHP 5 >= 5.3.0, PHP 7)

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.


范例

Example #1 openssl_random_pseudo_bytes() 范例:

<?phpfor ($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