<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 從Linux內核中獲取真隨機數(shù)

          從Linux內核中獲取真隨機數(shù)

          作者: 時間:2016-10-08 來源:網(wǎng)絡 收藏

          [38070.575481] We get random number: 240443446

          [38070.575485] We get random number: -606998911

          [38070.575489] We get random number: 538794850

          [38070.575493] We get random number: -500786675

          [38070.575497] We get random number: -1240394927

          [38070.575501] We get random number: 1233931345

          [38070.575504] We get random number: 1488497117

          [38070.575508] We get random number: -177688514

          /dev/random /dev/urandom

          這兩個特殊設備都是字符型設備。我們可以在用戶空間通過read系統(tǒng)調用讀這兩個設備文件以此獲取隨機數(shù)。這兩個設備文件的區(qū)別在于:如果內核熵池的估計值為0時,

          /dev/random將被阻塞,而/dev/urandom不會有這個限制。

          #include

          #include

          #include

          #include

          #include

          /* 從min和max中返回一個隨機值 */

          int random_number(int min, int max)

          {

          static int dev_random_fd = -1;

          char *next_random_byte;

          int bytes_to_read;

          unsigned random_value;

          assert(max > min);

          if (dev_random_fd == -1)

          {

          dev_random_fd = open(/dev/random, O_RDONLY);

          assert(dev_random_fd != -1);

          }

          next_random_byte = (char *)random_value;

          bytes_to_read = sizeof(random_value);

          /* 因為是從/dev/random中讀取,read可能會被阻塞,一次讀取可能只能得到一個字節(jié),

          * 循環(huán)是為了讓我們讀取足夠的字節(jié)數(shù)來填充random_value.

          */

          do

          {

          int bytes_read;

          bytes_read = read(dev_random_fd, next_random_byte, bytes_to_read);

          bytes_to_read -= bytes_read;

          next_random_byte += bytes_read;

          }while(bytes_to_read > 0);

          return min + (random_value % (max - min + 1));

          }

          同樣,還可以用dd命令從/dev/urandom中獲取指定字節(jié)數(shù)的隨機值并寫入文件中保存--如果你需要以文件的形式提供隨機數(shù)的話。

          dd if=/dev/urandom of = file count = 1 bs = bytes


          上一頁 1 2 下一頁

          關鍵詞:

          評論


          相關推薦

          技術專區(qū)

          關閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();