手机版
你好,游客 登录 注册
背景:
阅读新闻

Linux中的随机数文件 /dev/random /dev/urandom

[日期:2012-05-17] 来源:Linux社区  作者:hipercomer [字体: ]

Linux中的随机数可以从两个特殊的文件中产生,一个是/dev/urandom.另外一个是/dev/random。他们产生随机数的原理是利用当前系统的熵池来计算出固定一定数量的随机比特,然后将这些比特作为字节流返回。熵池就是当前系统的环境噪音,熵指的是一个系统的混乱程度,系统噪音可以通过很多参数来评估,如内存的使用,文件的使用量,不同类型的进程数量等等。如果当前环境噪音变化的不是很剧烈或者当前环境噪音很小,比如刚开机的时候,而当前需要大量的随机比特,这时产生的随机数的随机效果就不是很好了。

这就是为什么会有/dev/urandom和/dev/random这两种不同的文件,后者在不能产生新的随机数时会阻塞程序,而前者不会(ublock),当然产生的随机数效果就不太好了,这对加密解密这样的应用来说就不是一种很好的选择。/dev/random会阻塞当前的程序,直到根据熵池产生新的随机字节之后才返回,所以使用/dev/random比使用/dev/urandom产生大量随机数的速度要慢。

下面是一个简单的测试:

  1. [lichao@sg01 dd]$ dd if=/dev/random of=random.dat bs=1024b count=1 
  2.  
  3. 0+1 records in 
  4.  
  5. 0+1 records out 
  6.  
  7. 128 bytes (128 B) copied, 0.000169 seconds, 757 kB/s 
  8.  
  9. [lichao@sg01 dd]$ dd if=/dev/urandom of=random.dat bs=1024b count=1 
  10.  
  11. 1+0 records in 
  12.  
  13. 1+0 records out 
  14.  
  15. 524288 bytes (524 kB) copied, 0.091297 seconds, 5.7 MB/s 

可以看到使用/dev/random产生随机数的速度很慢,而且产生的量很有限,当然,/dev/urandom的随机效果则好很多。

linux
相关资讯       Linux基础教程 
本文评论   查看全部评论 (0)
表情: 表情 姓名: 字数

       

评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款