Linux中的随机数文件 /dev/random /dev/urandom
2016-08-31 10:13
489 查看
转自:http://www.linuxidc.com/Linux/2012-05/60476.htmLinux中的随机数可以从两个特殊的文件中产生,一个是/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的随机效果则好很多。
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的随机效果则好很多。
相关文章推荐
- Linux中的随机数文件 /dev/random /dev/urandom
- Linux中的随机数文件 /dev/random /dev/urandom
- Linux中的随机数文件 /dev/random /dev/urandom
- 利用linux的/dev/urandom文件产生较好的随机数
- linux 随机数的产生/dev/random 和/dev/urandom
- 用srand, rand产生的随机数有隐患------还是用利用linux的/dev/urandom文件产生随机数吧
- 利用linux的/dev/urandom文件产生较好的随机数
- 在Linux中利用熵池 /dev/urandom 生成固定长度随机数
- Linux - 文件 /dev/null 和 /dev/zero
- linux :/dev下的一些文件
- 特殊文件:null,zero,random,urandom
- Linux Shell脚本编程--(linux空设备文件和重定向)>/dev/null 2>&1
- /dev/random和/dev/urandom
- linux /dev 常见特殊设备介绍与应用[loop,null,zero,full,random]
- linux下修改/dev/shm tmpfs文件系统大小
- Produce entropy for /dev/random in Linux
- linux /dev 常见特殊设备介绍与应用[loop,null,zero,full,random]
- Linux下Shell输出重定向到空设备文件1>/dev/null 2>&1
- linux /dev 常见特殊设备介绍与应用[loop,null,zero,full,random]
- linux下修改/dev/shm tmpfs文件系统大小