/dev/urandom
Posted 沧海一滴
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了/dev/urandom相关的知识,希望对你有一定的参考价值。
/dev/urandom
则是一个非阻塞的发生器:
dev/random的一个副本是/dev/urandom (”unlocked”,非阻塞的随机数发生器),它会重复使用熵池中的数据以产生伪随机数据。这表示对/dev/urandom的读取操作不会产生阻塞,但其输出的熵可能小于/dev/random的。它可以作为生成较低强度密码的伪随机数生成器,不建议用于生成高强度长期密码。
另外wiki里也提到了为什么linux内核里的随机数生成器采用SHA1散列算法而非加密算法,是为了避开法律风险(密码出口限制)。
回到tomcat文档里的建议,采用非阻塞的熵源(entropy source),通过java系统属性来设置:
-Djava.security.egd=file:/dev/./urandom
这个系统属性egd表示熵收集守护进程(entropy gathering daemon),但这里值为何要在dev
和random
之间加一个点呢?是因为一个jdk的bug,在这个bug的连接里有人反馈及时对 securerandom.source 设置为/dev/urandom
它也仍然使用的/dev/random
,有人提供了变通的解决方法,其中一个变通的做法是对securerandom.source设置为/dev/./urandom
才行。也有人评论说这个不是bug,是有意为之。
以上是关于/dev/urandom的主要内容,如果未能解决你的问题,请参考以下文章
hostapd/dev/random/dev/urandom
如何在 C 中使用 /dev/random 或 urandom?
linux环境中通过/dev/urandom设备产生随机密码
如何创建/dev/random和/dev/urandom字符设备
已弃用 Spring Boot 应用程序的 java.security.egd=file:/dev/./urandom?