博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
随机数
阅读量:6323 次
发布时间:2019-06-22

本文共 1007 字,大约阅读时间需要 3 分钟。

1、伪随机数:即是统计学伪随机性,每个值的概率出现相同。

  伪随机是由可确定的函数(常用线性同余),通过一个种子(常用时钟),产生的伪随机数。这意味着:如果知道了种子,或者已经产生的随机数,都可能获得接下来随机数序列的信息(可预测性)。

2、密码学安全伪随机性:给定随机样本的一本分和随机算法推算不出剩余部分。
3、真随机性:在具备上两条的基础上,还要具备不可重现性,不能通过给定相同的数据计算出相同序列。
  由于计算机算法均具备确定的特性,所以真随机数无法由算法来生成
  一般都是物理生成如:某一时间点的衰变速度、某一地区的本底辐射值、正确使用设计良好的骰子所获得的输出等

 

php中mt_rand()为伪随机数

第一次调用mt_rand()会自动播种,而后不会再播种,知道该进程结束,才会重新播种
这样该进程生成的随机数就都会使用相同的种子,这样就可以根据随机数破解出种子,而后计算出后面的随机数

破解原理:穷举所有的种子并根据种子生成随机数序列再跟已知的随机数序列做比对来验证种子是否正确

参考:

https://xz.aliyun.com/t/31/

php_mt_seed 破解工具 https://www.openwall.com/php_mt_seed/README

 

linux 下

/dev/random Linux
内核中的是第一个以背景噪声产生真正的随机数产生的实现,它允许程序访问来自设备驱动程序或其它来源的背景噪声。
发生器有一个容纳噪声数据的熵池,在读取时,/dev/random设备会返回小于熵池噪声总数的随机字节。/dev/random可生成高随机性的公钥或一次性密码本。若熵池空了,对/dev/random的读操作将会被阻塞,直到收集到了足够的环境噪声为止[3]。这样的设计使得/dev/random是真正的随机数发生器,提供了最大可能的随机数据熵,建议在需要生成高强度的密钥时使用。

/dev/random的一个副本是/dev/urandom(“unblocked”,非阻塞的随机数发生器[4]),它会重复使用熵池中的数据以产生伪随机数据。这表示对/dev/urandom的读取操作不会产生阻塞,但其输出的熵可能小于/dev/random的。它可以作为生成较低强度密码的伪随机数生成器,不建议用于生成高强度长期密码。

随机数配置:/proc/sys/kernel/random 

 

转载地址:http://ekvaa.baihongyu.com/

你可能感兴趣的文章
SpringBoot 实战 (二) | 第一个 SpringBoot 工程详解
查看>>
Go goroutine理解
查看>>
IDE 插件新版本发布,开发效率 “biu” 起来了
查看>>
理解环境变量 JAVA_TOOL_OPTIONS
查看>>
看大牛是如何使用和理解线程池
查看>>
sql server 索引阐述系列八 统计信息
查看>>
c# Request对象(13)
查看>>
USB,蓝牙,以太网,还是WIFI?
查看>>
阿里云服务器更改时区为utc
查看>>
APP测试流程和测试点
查看>>
ansible实战
查看>>
PowerShell 远程管理之启用和执行命令
查看>>
mysql安装错误
查看>>
马斯克:我并不讨厌苹果 Apple Watch还不成熟
查看>>
win系统与linux系统之间文件备份
查看>>
PHP中实现函数重载
查看>>
白宫电子邮件系统疑被黑:第一夫人护照信息被曝光
查看>>
站在物联网风口,传感器产业弯道超车?
查看>>
Javascript类型转换的规则
查看>>
Shell脚本学习之sed详解
查看>>