首页 / 知识
关于安全性:更好地随机生成PHP
2023-04-11 21:07:00

Better Random Generating PHP我知道仅使用 我有一个项目高度依赖于选择一个尽可能不可预测的随机数。因此,我正在寻找可以生成更好的随机数的其他内置函数或用户函数的建议。 我用它来做一些测试:
我发现结果是均匀分布的,每个数字生成的次数有一个奇怪的规律。 添加,相乘或截断不良的随机源将给您不良的随机结果。有关说明,请参见随机性和随机数简介。 您对PHP rand()函数是正确的。引人注目的插图,请参见统计分析的第二个图。 (第一个数字引人注目,但它是由Scott Adams绘制的,未使用rand()绘制)。 一种解决方案是使用真正的随机生成器,例如random.org。另一个,如果您使用的是Linux / BSD / etc。是使用/ dev / random。如果随机性是关键任务,则必须使用硬件随机数生成器。 random.org具有可以通过HTTP访问的API。
我会对随机性的印象保持警惕:在许多实验中,人们会选择随机性较低的分布。似乎头脑不太擅长产生或估计随机性。 Fourmilab上有很多关于随机性的文章,包括另一篇真正的随机发生器。也许您可以从这两个站点获取随机数据,所以如果一个站点出现故障,您仍然可以拥有另一个站点。 Fourmilab还提供了一个测试程序来检查随机性。您可以使用它来检查各种myRand()程序。 对于最后一个程序,如果生成10000个值,为什么不从1万个中选择最终值呢?您将自己限制为一个子集。另外,如果您的$ min和$ max大于10000,则将不起作用。 无论如何,您需要的随机性取决于您的应用程序。 rand()对于在线游戏来说是可以的,但对于密码术来说则是不可行的(任何未经统计程序彻底测试的东西都将不适合于密码学)。您是法官! 获取随机数的另一种方法,其概念类似于获取UUID PHP版本5.3及更高版本
或者您可以使用RFC4122尝试以下库 @KG上的变化,使用自EPOCH以来的毫秒数作为兰特的种子? 一个新的PHP7,有一个功能可以完全满足您的需要:它会生成加密安全的伪随机整数。
有关PRNG和CSPRNG(及其区别)以及为什么您的原始方法实际上不是一个好主意的更详细说明,请阅读我的另一个非常相似的答案。 |
最新内容
相关内容
python怎么用python生成不同随机数
python怎么用python生成不同随机数,培训,模块,方法,长度,例子,下面,以上,之间,参数,操作,python中的random模块用于生成随机数,random模块中有python如何选择python版本?
python如何选择python版本?,项目,代码,培训,名字,地方,系统,里面,版本,问题,变量,Python3.7已经发布了,目前Python的用户,主要使用的版本应该是python生成不重复的随机数怎么写
python生成不重复的随机数怎么写,培训,数字,范围内,结果,表达式,语法,个数,模块,以上,表示,python中的random模块用于生成随机数,其语法表达式python选择python2还是python3?
python选择python2还是python3?,电脑,培训,时间,项目,动力,公司,官方,理由,答案,建议,看到很多新同学在学习Python的过程中,犹豫学习Python2还python静态web服务器如何实现
python静态web服务器如何实现,数据,培训,服务,代码,时间,服务器,静态,报文,浏览器,消息,python静态web服务器如何实现的方法:1、编写TCP服务器您对第一个Java EE Spring项目的“
您对第一个Java EE Spring项目的“最佳实践”是什么?,您对第一个Java EE Spring项目的“最佳实践”是什么?,框架,我是,很难,尝试,What关于安全性:使用C语言保护内存分配
关于安全性:使用C语言保护内存分配器,关于安全性:使用C语言保护内存分配器,调试器,内存,附加,属性,Secure Memory Allocator in C++我关于安全性:防御性编程
关于安全性:防御性编程,关于安全性:防御性编程,漏洞,缓冲区溢出,编程,编写代码,Defensive programming在编写代码时,您有意识地进行防御关于c#:找不到导入的项目“ C:Microso
关于c#:找不到导入的项目“ C:Microsoft.CSharp.targets”,关于c#:找不到导入的项目“ C:Microsoft.CSharp.targets”,错误,项目,尝试,收关于版本控制:DVCS选择-Windows有什
关于版本控制:DVCS选择-Windows有什么用?,关于版本控制:DVCS选择-Windows有什么用?,项目,版本控制系统,支持,我想,DVCS Choices - What'您将哪些代码分析工具用于Java项目
您将哪些代码分析工具用于Java项目?,您将哪些代码分析工具用于Java项目?,分析工具,项目,代码,我对,What code analysis tools do you u关于msbuild:自动发布脚本和Visual
关于msbuild:自动发布脚本和Visual Studio安装项目,关于msbuild:自动发布脚本和Visual Studio安装项目,项目,集成,我认为,问题是,Autom