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. 0+1 records in
  3. 0+1 records out
  4. 128 bytes (128 B) copied, 0.000169 seconds, 757 kB/s
  5. [lichao@sg01 dd]$ dd if=/dev/urandom of=random.dat bs=1024b count=1
  6. 1+0 records in
  7. 1+0 records out
  8. 524288 bytes (524 kB) copied, 0.091297 seconds, 5.7 MB/s

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

更多:http://zh.wikipedia.org/zh-cn//dev/random

http://blog.csdn.net/wind19/article/details/8085164

最新文章

  1. apachetop 实时监测web服务器运行状况
  2. sql server2008给数据表,字段,添加修改注释
  3. jquery/zepto 圣诞节雪花飞扬
  4. SQL Server 性能优化之——T-SQL 临时表、表变量、UNION
  5. (视频)《快速创建网站》 4.2 完结篇 – 应用运营vs.发射卫星,遥测(Telemetry) 技术
  6. UVA 12382 Grid of Lamps --贪心+优先队列
  7. php检测php.ini是否配制正确
  8. HDU 2144 (最长连续公共子列 + 并查集) Evolution
  9. mybatis 关联映射传递多参数方法
  10. Extjs-4.2.1(二)——使用Ext.define自定义类
  11. Java之hashSet实现引用类型的禁止重复功能
  12. 前后端分离--mock
  13. ssh框架用JUnit测试
  14. App内切换语言
  15. C#委托基础学习
  16. 【BAT面试题系列】面试官:你了解乐观锁和悲观锁吗?
  17. Java的SSH框架整合
  18. Beta 冲刺(2/7)
  19. Yarn集群的搭建、Yarn的架构和WordCount程序在集群提交方式
  20. Redis基础知识小结

热门文章

  1. 【S】【S】【S】一大波前端干货整合(一)
  2. JQ实现复选框的全选反选不选
  3. 通过修改ajaxFileUpload.js实现多图片动态上传并实现预览
  4. MVC小系列(二十一)【带扩展名的路由可能失效】
  5. 用Android-X86和VirtualBox打造高性能Android开发环境
  6. SQL Server调优系列基础篇 - 子查询运算总结
  7. ios应用来电监听
  8. 浅谈break 、continue、return,goto四种语句的区别。
  9. oracle 日期格式大全
  10. 14_输出映射2_resultMap