加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

linux – 为什么经常读取/ dev / random逐字节块?

发布时间:2020-12-13 22:55:50 所属栏目:Linux 来源:网络整理
导读:以下调用快速返回: time dd if=/dev/random bs=1024 count=1.... 0+1 records in0+1 records out49 bytes (49 B) copied,0.000134028 s,366 kB/sreal 0m0.004suser 0m0.001ssys 0m0.002s 但是,如果/ dev / random被一个接一个地读取: for i in {1..500}; d
以下调用快速返回:

time dd if=/dev/random bs=1024 count=1
.... 0+1 records in
0+1 records out
49 bytes (49 B) copied,0.000134028 s,366 kB/s

real    0m0.004s
user    0m0.001s
sys    0m0.002s

但是,如果/ dev / random被一个接一个地读取:

for i in {1..500}; do dd if=/dev/random bs=1 count=1 status=none; done

循环读取几个字节,然后阻塞几秒钟,然后读取另外几个字节.在键盘上键入随机字符可以大大加快这个过程,就像随机池中没有足够的熵一样.毕竟循环需要很多分钟才能完成.

是什么让读/ dev / random逐字节比从它读取块慢很多?

Uname -a:

Linux ... 2.6.32-431.11.2.el6.centos.plus.x86_64

解决方法

答案在于你的问题:

49 bytes (49 B) copied,366 kB/s

所以它没有复制1024字节,就像告诉它,但只有少数然后停止.我认为这与你在循环之前在循环中获得的数量相同.

/ dev / random很慢,因为它需要从不同的源收集随机性,只要没有可用,它就不会输出任何内容.

如果您需要更快的数字,请使用/ dev / urandom.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读