Linux中/dev/random和/dev/urandom的作用

1./dev/random和/dev/urandom介绍

在Linux环境中,我们会用到/dev/random和/dev/urandom,今天为大家讲讲/dev/random和/dev/urandom的作用以及使用场景。

1.1./dev/random介绍

/dev/random是一个特殊的字符设备文件,用于生成“高质量”的随机数。它通过收集系统上的环境噪声来产生随机数,只有当系统上有足够多的环境噪声时才能生成随机数,因此/dev/random生成的随机数是相对“高质量”的。但是当系统上没有足够多的环境噪声时,生成随机数的速度可能会“停止”,如果某些应用程序需要大量的随机数时,可能会导致其无法正常工作。

1.2./dev/urandom介绍

/dev/random也是一个特殊的字符设备文件,用于生成“伪”随机数。它通过使用内部熵池来生成随机数,而与环境噪声有多少无关,因此,/dev/urandom生成的随机数速度远远快于/dev/random产生的随机数,且不存在生成随机数时可能“停止”的场景。但是在系统刚刚启动时,内部熵池不够大,因而生成的随机数可能不够"随机",随着系统的持续运行,内部熵池会越来越大,那么生成的“伪”随机数的质量也会提高。

2./dev/random和/dev/urandom使用场景

2.1./dev/random使用场景

使用/dev/random生成8位随机密码

[root@rhel77 ~]# head -c 4 /dev/random |base64
yLIWeQ==
[root@rhel77 ~]# head -c 4 /dev/random |base64
UBMdGw==
[root@rhel77 ~]# head -c 4 /dev/random |base64
No/6hw==

当系统上没有足够多的环境噪声时,生成随机数的速度可能会“停止”

2.2./dev/urandom使用场景

使用/dev/urandom生成8位随机密码

[root@rhel77 ~]# tr -dc '0-9a-zA-Z' 

上述命令将随机文件中其他的字符删除,仅保留大小写字母,数字的情况下,取前8位。

由于当系统上没有足够多的环境噪声时,生成随机数的速度可能会“停止”,而在实际环境中,使用/dev/urandom产生的随机数已足够安全,且产生速度非常快,因此当需要使用随机数时,建议使用/dev/urandom来产生即可。

你可能感兴趣的:(linux小常识,linux,服务器,运维,算法)