随机数对于密码密钥来说是很重要的,比如RSA算法,比如DH算法,那么如何产生随机数呢,我们不能指望机器能产生随机数,真正随机的是人,只有人才是真正随机的,人们可以通过不确定的对电脑的行为才产生随机,比如键盘敲击,比如鼠标点击和鼠标位移,以及两次敲击和点击之间的间隔,这些都可以被认为是随机的根源,并且也可以认为只有这这样是随机的。/dev/random就是为这一过程服务的,每当有键盘或者鼠标以及诸如此类的事件发生的时候,随机值就会进入一个随机池,然后用新的随机变量搅拌整个池,然后将结果加入池,如果有用户取随机数,那么就从池中取,如果随机数已经没有了,就只有等待键盘或者鼠标或者别的什么中断再次填满随机池,因此如果你从/dev/random读取随机数,那么可能会阻塞,如果你疯狂的打一阵子键盘,那么随机数可能会很快出现。最后,不要指望机器会产生随机数,真正产生随机数的是人!
本文转自 dog250 51CTO博客,原文链接:http://blog.51cto.com/dog250/1271996