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 将如何生成随机数

random(unlimited random) 将使用熵池返回随机数,但如果熵池为空,它将使用 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 z0 to 9.

head 命令将生成一个 14 个字符的字符串(使用 -c14).

总结

在本指南中,我解释了 /dev/random 和 /dev/urandom 的基础知识,包括对随机性的需求。

如果你好奇,我用 Urandom 它可以生成密码,因为我发现它很健壮并且不太可能出现您使用时可能遇到的错误 Random.

我希望您会发现本指南对您有所帮助,如果您有任何疑问,请在评论中告诉我。