PHP中的随机性――你觉得自己幸运吗?-php程序员培训,php开发,电脑编程

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

2018-04-20 10:11 阅读次数:来源:php开发电脑编程 新闻作者:php程序员培训

 

 


       

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

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

  在其他平台,arc4random_buf()如果可用会被使用(在BSD系列或者具有libbsd的系统上成立)

  以上都不成立的话,一个linux系统调用getrandom(2)会被使用。

  一个好的随机数生成系统保证合适的产生“质量”。为了检查这个质量,通常要执行一连串的统计测试。不需要深入研究复杂的统计主题,比较一个已知的行为和数字生成器的结果可以帮助质量评价。

  一个简单的测试是骰子游戏。假设掷1个骰子1次得到结果为6的概率是1/6,那么如果我同时掷3个骰子100次,得到的结果粗略如下:

  如果先看到rand和random_int更好的比较我们可以应用一个公式把结果画在图上。公式是:(php结果-期待的结果)/期待结果的0.5次方。

  尽管3个6的结果表现不好,并且这个测试对实际应用来说太过简单我们仍可以看出random_int表现优于rand.

  进一步,我们的应用的安全级别由于不可预测性和随机数发生器的可重复行为而得到提升。

  你总是应该使用一个密码学上安全的伪随机数生成器,random_compat库提供了一种好的实现。

  如果你想要使用可靠的随机数据源,如你在本文所见,建议尽快使用random_int和random_bytes.

  




友情链接: 书法作品欣赏 壹诺网站优化 山东威海凤凰湖 贵阳幼师学校 威海石岛楼盘 公务员考试 凤凰湖官网 威海银滩海景房 防爆板 厝内小眷村加盟