Linux 中的 /dev/random 和 /dev/urandom 是什么?
这个问题的简短回答是“生成随机数的方法”。
我确信你已经意识到了这一点。
/dev/random
但要了解和的用途/dev/urandom
,首先,您必须知道为什么生成随机数如此重要。
为什么生成随机数至关重要?
计算机是机器,按照一组指令工作(这就是我们创建程序使其工作的原因)。
这就是为什么我们不可能让机器想出任何随机数。
你可能会问,为什么生成随机数如此重要?答案很简单。
安全问题。
大多数加密算法都是基于生成随机数,因为这些数以后会被用来创建加密密钥。
如果生成的数字本质上不是完全随机的,那么整个加密技术就会变得脆弱。
因为这些密钥很容易被预测。这就是生成随机数的最重要原因。
那么Linux是如何应对这种情况的呢?很简单,这就是今天讨论的主题。
使用 /dev/random 和 /dev/random。
/dev/random 和 /dev/urandom 的使用
你猜对了。它们都用于生成随机数。
它们都用于为内核的随机数生成器提供接口。
随机数生成器将从设备驱动程序等外部源收集随机输入到熵池中。
但是,由于它们采用不同的方法来生成随机数,因此/dev/random
和之间存在巨大差异。/dev/urandom
/dev/random 如何生成随机数
/dev/random 只会返回来自熵池的随机数,如果熵池为空或没有表明足够的随机性,则读取/dev/random
将被阻止。
使其成为生成高质量随机数的理想选择。
/dev/urandom 如何生成随机数
随机(无限随机)将使用熵池返回随机数,但如果熵池为空,它将使用 SHA、MD5 或任何其他算法生成数据。
这意味着,与不同/dev/random
,它不会阻止读取,即使随机性不够,它也会继续获取随机数。
选择哪一个?
'Random' 和 'Urandom' 是针对特定用例而设计的。Urandom
当需要不断使用随机数并且其随机性不太重要时,会使用 。
而它Random
适用于以安全性为主要关注点的任务,因为如果随机性达不到标准,它将阻止读取。
尽管的随机性Urandom
比稍弱Random
,但它仍被许多操作所使用,但我建议您使用Random
(如果您坚持拥有强大的安全性)。
奖励:使用 Urandom 生成随机密码
要使用生成随机密码Urandom
,您只需按照给定的命令操作:
sudo < /dev/urandom tr -dc A-Za-z0-9 | head -c14; echo
这里,tr 命令将让您过滤输出,/dev/urandom
例如它将从A to Z
、a to z
和中获取您的密码0 to 9
。
head 命令将生成一个由 14 个字符组成的字符串(使用-c14
)。
总结
在本指南中,我解释了 /dev/random 和 /dev/urandom 的基础知识,包括随机性的需求。
如果您好奇的话,我会使用Urandom
它来生成密码,因为我发现它非常强大并且不太可能出现使用时可能遇到的错误Random
。
我希望您发现本指南有用,如果您有任何疑问,请在评论中告诉我。