分享

/dev/random和/dev/urandom区别 ? 死灰的博客

 langhuayipian 2011-07-07

random和urandom这个两个设备都是linux提供随机数的。很多应用用到他们提供随机数(ssh keys, SSL keys, TCP/IP sequence numbers)
random设备的random pool是从基于中断的IRQS里面取值,IRQS跟一些特殊的硬件绑定,基于这些硬件的interrupts将会提供给random设备。
uramdom设备用来生成低质量的随机数序列

可以查看这两个设备的随机数

cat /dev/random

iXX"
?c2磎?VoI-?

cat /dev/urandom

15OU·6A?????Ψ??:Q竰M*????m?h(?Ce{Υ??Q??}}門x?!a??b
                                                        '·?2^~~S煦?旌?A??p???????2?/19??¥?Fˉe¤?1r2jB-o?v|'8??′XPo?????|T\?±:IЖ??-?f?M·?1?y¢L?<aUFp!??0?¢?P#?
                                                                                                                                                                            \?? ?pμ?<?W??>F.?o?!t?i[±??B??p???8?AN?5Gj±G??c???iW
              ??)Q%?¨y?H?&C`uxC????|?繛???£???kiF?`′?4?a?1s??
                                                                  ?{Q?M?T????¥(??FVи?鴮?C?9;?]ЗГ4Zmg??{U?′μjf????????¥?r?SC???¤R:^a£??67_?St<?|操?q??5????Ε=G?aJ?S?ZP?0°wаμwJ£(?5
?????;?%Ii十3?Th"+?£阅z?S!?C<$?E\???%0M挃<a href="mailto:¨???w@·Ta">¨???w@·Ta</a>萁:s??V"£¤?????b?H??6bl]?p??JM1?r|\J&?s,?$?¤?>Q?S£b??O
?eJvhF,PAX?#??|?7nQ??>?????_EOi;-????
                                        ?K1dQ)??!? a9Kk?£Q?{?!?,&"?,$>[??_*?$|?a????]tuYA?O)L?-?x??`???ˉ??歅y?????3伪.aN$′C$??p3婘rD???F??Ж??o?oB???2鲻??F?NoE?hU??oG?G??j|??.′2>?pol2g)O$???-)9p_?xOBJ?УY???[??    ?鴃P??ghvBJ?a??圦ˋ???F{?
                                                                                    ?k?3=\L?О?′A5B
£8$o&ě′W聿?  ˉi?Y?┃?f?S
                              ˉk?閦I?£???Dj9??#???ox?H8Q:?±?$?5??E??o??
*?o?i′Иua齘?ǔ?&aR8?^j??¥su¨        ?
±az??9K??o·9#?"a?|&????°DCv0^?′?"bvl ??=??$°q?`Cg淴Д劼?v4???vyw???YH'?i?6偢3潻?V/
°μ?°C1?A???????|Q???уM9
                                se?А?C??C???pXtt??a?£^??;gw?oeйCX?q°?6???ПSa????D+d??T3??]?YP|?KU:R飑 7??v¨b??oX??3·??BR

urandom能比random更快速生成随机数,但是随机数的随机性会差一些,有些可能会相同

也可以用测试的方法来测试,测试下面的两条。会发现random的只能生产几个,然后会很久才能再次生成,而urandom能很快的生产很多随机数

while [ 1 ];do /bin/dd if=/dev/random bs=20 count=1 2&gt;/dev/null|md5sum; done
while [ 1 ];do /bin/dd if=/dev/urandom bs=20 count=1 2&gt;/dev/null|md5sum; done

结语:从/dev/random取值但是/dev/random取不到足够值的情况,这时候取值的进程将会等待,直到得到足够的random 值。而且会一直占用cpu时间,后果自己想哈
如果碰到这种情况的时候,可以这样:
#mv /dev/random /dev/random_bak
#ln -s /dev/urandom /dev/random
都用urandom来生成吧

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多