栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

在PHP中生成加密安全的随机数

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

在PHP中生成加密安全的随机数

伪随机数生成器(PRNG)是非常复杂的野兽。

没有真正的“完美”随机数生成器-实际上,可以通过数学函数完成的最好的操作是伪随机数-对于大多数意图和目的,它们似乎足够随机。

实际上,从PRNG返回的数字中执行任何其他操作并不会真正增加其随机性,并且实际上,数字的随机性会降低。

因此,我最好的建议是,不要弄乱PRNG返回的值。使用足以满足预期用途的PRNG,如果不是,则在必要时找到可以产生更好结果的PRNG。

坦率地说,该

mt_rand
函数似乎使用了Mersennetwister,它实际上是一个非常不错的PRNG,因此对于大多数临时使用来说可能已经足够好了。

但是, Mersenne Twister并非旨在用于任何安全上下文

编辑

评论中有一个问题,为什么对随机数执行运算可以使随机性降低。例如,某些PRNG可以在比特的不同部分返回更一致,更少的随机数-高端可能比低端更多。

因此,在丢弃高端并返回低端的操作中,该值的随机性可能小于从PRNG返回的原始值。

目前,我找不到很好的解释,但是我基于Java文档中的

Random.nextInt(int)
方法进行了解释,该方法旨在在指定范围内创建一个相当随机的值。该方法考虑了值各部分的随机性差异,因此与诸如的更幼稚的实现相比,它可以返回更好的随机数
rand()% range



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/443057.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号