利用linux的/dev/urandom文件產生較好的隨機數

        很多朋友經常用srand/rand產生隨機數, 其實這種隨機性並不好, 容易遭受攻擊(很多時候, 也滿足不了需求)。 在本文中, 我們來簡要介紹一下利用Linux的/dev/urandom文件產生較好的隨機數, 直接上代碼吧:

[cpp] view plain copy
 在CODE上查看代碼片派生到我的代碼片
  1. #include <stdio.h>  
  2. #include <fcntl.h>  
  3.   
  4. int main()  
  5. {  
  6.         int randNum = 0;  
  7.         int fd = open("/dev/urandom", O_RDONLY);  
  8.         if(-1 == fd)  
  9.         {  
  10.                 printf("error\n");  
  11.                 return 1;  
  12.         }  
  13.   
  14.         read(fd, (char *)&randNum, sizeof(int));  
  15.         close(fd); // 千千萬萬不要漏, 我曾漏過, 結果好悲劇  
  16.           
  17.         printf("randNum is %d\n", randNum);  
  18.   
  19.         return 0;  
  20. }  

     結果:

[taoge@localhost learn_c]$ ./a.out 
randNum is -1061686095
[taoge@localhost learn_c]$ ./a.out 
randNum is 1768060870
[taoge@localhost learn_c]$ ./a.out 
randNum is -1313095365
[taoge@localhost learn_c]$ ./a.out 
randNum is -1651791231
[taoge@localhost learn_c]$ ./a.out 
randNum is 932742445
[taoge@localhost learn_c]$ ./a.out 
randNum is 1191576271
[taoge@localhost learn_c]$ 

      除了/dev/urandom還, 實際上還有一個/dev/random, 兩者是有一些小區別的, 有興趣的話, 大家可以在網上搜索並瞭解一下, 我就不再重複囉嗦了

http://blog.csdn.net/stpeace/article/details/45829161 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章