真*伪随机数

database

随机数特点

1 随机性:没有任何顺序

2 不可推测性:无法从已有的数据,推算下一个

3 不可重复性:任何随机数之间不重复

真随机数

  • 伴随着物理实验的,比如:抛硬币、掷骰子、电子元件的噪音、核裂变等,它的结果符合三大特性的。
  • 具体实现:intel通过电阻和振荡器生成热噪声作为信息熵资源;Unix/Linux的 /dev/random 和 /dev/urandom采用硬件噪音生成随机数
  • 优点:真实随机数
  • 缺点:需要硬件配合,技术要求高,效率

伪随机数

  • 通过一定算法,获得一个随机的值,并不是真的随机。伪随机又分为强伪随机数和弱伪随机数

强伪随机数

  • 更加贴近【真随机数】,满足特性的:随机性和不可推测性,难以预测
  • 具体实现:java的SecureRandom随机数生成器,就是强伪随机数,因为它内部是使用 击键动作 来作为种子,而击打键盘操作是物理操作,且是不规律的。

弱伪随机数

  • 满足随机性,可以预测
  • 具体实现:典型的比如java语言里的Random生成器,它是使用时间作为种子(线索)去构造生成器的,假如攻击者获得了构造生成器的时间,那么就可以预测到下一个随机数

总结

    1. 安全系数高、随机性要求高,推荐使用SecureRandom;

    1. 要求不高,使用Random即可;

  • 3.说到Random随机数,Collections类下面有一个随机排序算法–shuffle洗牌算法,其内部也是借助random来实现的。

以上是 真*伪随机数 的全部内容, 来源链接: utcz.com/z/534246.html

回到顶部