随机数真的随机吗?

随机数随机吗?

其实计算机的底层是有无数个二极管组成的,每个二极管都是特定的状态。所以无法做到真正的随机。真正的随机数需要靠硬件去打造。

伪随机数

伪随机数,通常意义上讲是软件领域的随机数。是因为计算机软件上是没有真正意义上的随机数。
随机数是安全领域的核心,如:依赖难以预测的随机数作为秘钥(Secret Key)

怎样实现更安全的随机数

  1. 真正重视随机数,不能用任何时间函数来充当随机数。系统时间看上去随机,但是是顺序增长,是可以被预测的。因此任何时间函数都不能当做随机数来使用。
  2. 在重要或敏感的系统中,要用足够强壮的随机数算法。因为伪随机数的种子一旦确定之后,再算出来的随机数的值是固定的。如Java中的random函数。
    可以使用Java.security.SecureRandom包里的随机数来代替random函数中的随机数,因为强壮的随机数算法采用更随机的事件作为种子:如鼠标的点击。
    同时C/C++中的srand/rand也是比较弱的,可以使用Linux里的/dev/random和/dev/urandom来替代
  3. 增大随机数的空间范围
  4. 组合多个随机数,增加随机数的复杂度。比如利用哈希算法。
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值