PHP中的随机性——你觉得自己幸运吗?

澳门新葡亰网址 2

本文由码农网 –
邱康原创翻译,转载请看清文末的转载要求,欢迎参与我们的付费投稿计划!

本文主要分析以加密为目的的随机数生成问题。PHP 5
并未提供生成强加密随机数的简便机制,但是,PHP 7 引入了两个 CSPRNG
函数以解决该问题。系
OneAPM
工程师编译整理。

本文分析了生成用于加密的随机数的相关问题。 PHP 5没有提供一种简单的机制来生成密码学上强壮的随机数,但是PHP 7通过引入几个CSPRNG函数来解决了这个问题。

澳门新葡亰网址 1

澳门新葡亰网址 2

PHP 中的随机数——你觉得可靠么?

什么是CSPRNG

引用维基百科,一个密码学上安全的伪随机数发生器(Cryptographically Secure Pseudorandom Number Generator 缩写CSPRNG)是一个伪随机数生成器(PRNG),其生成的伪随机数适用于密码学算法。

CSPRNG可能主要用于:

  • 密钥生成(例如,生成复杂的密钥)
  • 为新用户产生随机的密码
  • 加密系统

获得高级别安全性的一个关键方面就是高品质的随机性

什么是 CSPRNG?

引用维基百科的定义,密码安全的虚拟随机数生成器(Cryptographically
Secure Pseudorandom Number
Generator,CSPRNG)是带有特定属性使之在密码学中适用的虚拟随机数生成器(pseudo-random
number generator,PRNG)。

CSPRNG 主要用于:

  • 生成键(比如:生成复杂的键)
  • 为新的用户账号生成随机密码
  • 加密系统

保证高安全水准的一个重要因素便是高质量的随机数。

PHP7 中的CSPRNG

PHP 7引入了两个新函数可以用来实现CSPRNG: random_bytes 和 random_int。

random_bytes 函数返回一个字符串,接受一个int型入参代表返回结果的字节数。

例子:

$bytes = random_bytes('10');
var_dump(bin2hex($bytes));
//possible ouput: string(20) "7dfab0af960d359388e6"

random_int 函数返回一个指定范围内的int型数字。

澳门新葡亰网址,例子:

var_dump(random_int(1, 100));
//possible output: 27

PHP 7 中的 CSPRNG

PHP 7 为 CSPRNG 引入了两种新函数:random_bytesrandom_int

random_bytes 函数返回 string 类型,并接受一个 int
类型为参数,该参数规定了所返回字符串的字节长度。

例如:

$bytes = random_bytes('10');
var_dump(bin2hex($bytes));
//possible ouput: string(20) "7dfab0af960d359388e6"  

random_int 函数返回给定范围内的整型数字。

举例:

var_dump(random_int(1, 100));
//possible output: 27

发表评论

电子邮件地址不会被公开。 必填项已用*标注

相关文章

网站地图xml地图