Linux真隨機數的生成


今天看《白帽子講WEB安全》一書,看到筆者談到Linux如何實現真隨機數生成,感覺非常有用,記錄下來

#include<iostream>
using namespace std;
#include<unistd.h>
#include<fcntl.h>
#include<cmath>
int main()
{
                int randoms=open("/dev/random",O_RDONLY);
                int randomn;
                read(randoms,&randomn,sizeof(randomn));
                close(randoms);
                randomn=abs(randomn);
                cout<<randomn<<endl;
                return 0;
}

直接通過Linux的隨機數設備生成,基本貼近物理方法生成,屬於可靠手段,比使用時間作為種子生成隨機數要可靠的多

通常我們認為依據系統時鍾產生的隨機數是可靠的,實際上,時間是不斷增長的,只要攻擊者知道了時間基數,便可以預測出時間種子產生的隨機數。所以書中提到的這種通過物理設備產生的隨機數,缺乏規律性,更為可靠。物理生成隨機數的方法還有依據:電壓波動、硬盤磁頭讀\寫的尋道時間、空中電磁波噪聲等。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM