PHP 中的随机数——你觉得可靠么?
某厂面试归来,发现自己落伍了!>>> 本文主要分析以加密为目的的随机数生成问题。PHP 5 并未提供生成强加密随机数的简便机制,但是,PHP 7 引入了两个 CSPRNG 函数以解决该问题。系 OneAPM 工程师编译整理。 什么是 CSPRNG? 引用 维基百科 的定义,密码安全的虚拟随机数生成器(Cryptographically Secure Pseudorandom Number Generator,CSPRNG)是带有特定属性使之在密码学中适用的虚拟随机数生成器(pseudo-random number generator,PRNG)。 CSPRNG 主要用于: 生成键(比如:生成复杂的键) 为新的用户账号生成随机密码 加密系统 保证高安全水准的一个重要因素便是高质量的随机数。 PHP 7 中的 CSPRNG PHP 7 为 CSPRNG 引入了两种新函数: random_bytes 与 random_int 。 random_bytes 函数返回 string 类型,并接受一个 int 类型为参数,该参数规定了所返回字符串的字节长度。 例如: $bytes = random_bytes('10'); var_dump(bin2hex($bytes)); //possible ouput: string(20) "7dfab0af960d359388e6" random