Linux中的随机数文件 /dev/random /dev/urandom
2024-10-19 03:27:17
Linux中的随机数可以从两个特殊的文件中产生,一个是/dev/urandom.另外一个是/dev/random。他们产生随机数的原理是利用当前系统的熵池来计算出固定一定数量的随机比特,然后将这些比特作为字节流返回。熵池就是当前系统的环境噪音,熵指的是一个系统的混乱程度,系统噪音可以通过很多参数来评估,如内存的使用,文件的使用量,不同类型的进程数量等等。如果当前环境噪音变化的不是很剧烈或者当前环境噪音很小,比如刚开机的时候,而当前需要大量的随机比特,这时产生的随机数的随机效果就不是很好了。
这就是为什么会有/dev/urandom和/dev/random这两种不同的文件,后者在不能产生新的随机数时会阻塞程序,而前者不会(ublock),当然产生的随机数效果就不太好了,这对加密解密这样的应用来说就不是一种很好的选择。/dev/random会阻塞当前的程序,直到根据熵池产生新的随机字节之后才返回,所以使用/dev/random比使用/dev/urandom产生大量随机数的速度要慢。
下面是一个简单的测试:
- [lichao@sg01 dd]$ dd if=/dev/random of=random.dat bs=1024b count=1
- 0+1 records in
- 0+1 records out
- 128 bytes (128 B) copied, 0.000169 seconds, 757 kB/s
- [lichao@sg01 dd]$ dd if=/dev/urandom of=random.dat bs=1024b count=1
- 1+0 records in
- 1+0 records out
- 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
最新文章
- apachetop 实时监测web服务器运行状况
- sql server2008给数据表,字段,添加修改注释
- jquery/zepto 圣诞节雪花飞扬
- SQL Server 性能优化之——T-SQL 临时表、表变量、UNION
- (视频)《快速创建网站》 4.2 完结篇 – 应用运营vs.发射卫星,遥测(Telemetry) 技术
- UVA 12382 Grid of Lamps --贪心+优先队列
- php检测php.ini是否配制正确
- HDU 2144 (最长连续公共子列 + 并查集) Evolution
- mybatis 关联映射传递多参数方法
- Extjs-4.2.1(二)——使用Ext.define自定义类
- Java之hashSet实现引用类型的禁止重复功能
- 前后端分离--mock
- ssh框架用JUnit测试
- App内切换语言
- C#委托基础学习
- 【BAT面试题系列】面试官:你了解乐观锁和悲观锁吗?
- Java的SSH框架整合
- Beta 冲刺(2/7)
- Yarn集群的搭建、Yarn的架构和WordCount程序在集群提交方式
- Redis基础知识小结