Entropy(熵)

 PRNG(伪随机生成器)

 RNG(随机数生成器)

 

有两种方法可以从熵池中获取内核随机数。

一种是通过内核导出的随机数接口,另一种是通过特殊的设备文件/dev/random和/dev/urandom。

 

前面一种是给程序员大哥们用的,咱这样的菜鸟暂时是搞不懂了。

 

第二种方式,/dev/random & /dev/urandom

这两个特殊设备都是字符型设备。我们可以在用户空间通过read系统调用读这两个设备文件以此获取随机数。

这两个设备文件的区别在于:如果内核熵池的估计值为0时,也就是熵池不足的时候,/dev/random将被阻塞,而/dev/urandom不会有这个限制,它继续使用软件算法继续生成随机数,当然这时候的随机数算是伪随机数了。

有时候,我们在生成密钥的时候,需要用到随机数,如果熵池不足的时候,它会要我们敲键盘,晃鼠标什么的,是不是觉得特sha叉。可以通过下面这条命令,用urandom给内核熵池喂大量的随机数。。。

 

rngd -r /dev/urandom

 

 嗯,至于这种方式的随机性强度够不够,那恐怕得算法师来解答了。。。