NIST随机数测试软件下载,安装、和使用,分析方法最新版(19年4月)
NIST隨機數測試軟件下載,安裝、和使用方法
- NIST簡介
- NIST下載與安裝
- NIST軟件的使用
- NIST軟件使用過程中可能的出錯
- 如何查看finalAnalysisReport.txt和freq.txt
- 總結
畢設設計了一個偽隨機數生成器,用到了NIST檢驗偽隨機數的隨機性,現在由于軟件的更新等原因,以前前輩的博客里或多或少有些小問題,這里寫個博客總結一下博主安裝及使用過程中的經驗。
NIST簡介
NIST是美國國家標準與技術委員會發布的考評偽隨機序列隨機性的一種方法,一共有16個小測試,具體測試內容見這篇博客:
博客: link.
每個測試得到一個P-value值,大于這個值即認為隨機,小于這個值認為隨機性不夠強。
NIST下載與安裝
1,可以直接去NIST的官網下載軟件安裝包,鏈接如下,直接點擊Download下載最新版。
安裝包: link.
2,官網的軟件包是Linux系統下開發的,如果你的電腦是Linux系統,安裝非常簡單,直接進入文件夾make就行,Windows系統麻煩一點,需要先下一個cygwin軟件來輔助使用,下載鏈接如下,選擇自己電腦對應的版本即可。
Cygwin: link.
需要注意的是,NIST和Cygwin的下載都需要翻墻,不翻墻也可以,但速度極慢。
下載完成之后,先安裝Cygwin,運行setup.exe程序,出現安裝畫面。直接點“下一步”,出現安裝模式的對話框,如下圖所示:
直接下一步
上圖是選擇安裝目錄,確定好目錄之后,直接下一步。
上圖是選擇安裝過程中從網上下載的Cygwin組件包的保存位置,這個無所謂,選擇完以后,直接點擊“下一步”。
這一步選擇連接的方式,選擇你的連接方式,選擇直接連接這個選項就OK了,然后點擊下一步,會出現選擇下載站點的對話框,如下圖所示。
這里可以直接使用第一個鏡像鏈接,速度還可以,不是特別慢,選好后直接下一步即可。
安裝過程中需要注意一些問題,之前有前輩的博客寫過,鏈接如下。
博客: link.
但現在由于版本更新,很多界面都不一樣了,現在最新的安裝過程如下:
首先接著上圖的下一步之后,會出現一個選擇組件包的界面,這里需要點開Devel這個大包,要選擇里面的小項。
里面有很多,我們必須的是
binutils
gcc
gcc-mingw
gdb
其中gcc-mingw在新版的安裝包里博主一直沒找到,其余3個都能直接找到,沒辦法,博主就把gc開頭的組件包全部下載了,如下圖所示
這里只要雙擊Skip那個位置就會自動選擇最新版,或者點擊右邊那個倒三角選擇版本。
另外有一個非常重要的問題
前輩的博客里面,后面遇到了一個找不到make命令的錯誤,這個就是因為在選擇組件包的時候沒有選擇make,雖然安裝完之后也可以單獨下載這個包,然后放在安裝目錄里,可以解決這個問題,但博主當時安裝的時候,就算解壓到安裝目錄里,之后用的時候也一直提示我找不到make命令,只能重新安裝。
所以安裝時就直接把make裝上吧,它也在Devel這個大包里
都選擇好之后,可以直接下一步,進入下載界面
耐心等吧,大概需要30分鐘,博主前面選了很多的包,但最終安裝大小也就900M左右,不是特別的大。
最后安裝成功
接下來需要安裝NIST sts-2.1.2這個軟件包
運行Cygwin,通過命令行進入該軟件包中sts-2.1.2中包含 Makefile文件的文件夾,輸入make命令,該軟件就會自動安裝了。出現下圖界面就說明你安裝徹底成功了。博主當時安裝的時候報了個錯,說是定義了變量nu但之后并未使用。這個錯誤無所謂,親測并不影響后面的使用。
NIST軟件的使用
接下來就是NIST檢驗的應用,這里有很多前輩的博客寫過,但很多比較零散,這里總結一下,以及寫寫博主當時遇到的問題。
1.輸入./assess.exe,回車
2.輸入./assess.exe 1000000,回車。表示將數據段的長度設置為1000000(bits)=1M(bits)。注意,NIST檢驗是按數據段來檢驗的,無論你原始的數據文件多大,都是分成小段,這里一段是一百萬個比特位也就是1M。比如128M的數據就分成128段,30M的數據就分成30段。這里每段多長是可變的,但是數據段的長度應該至少大于1M(bits),因為有些檢驗要求輸入的數據流至少要大于等于1M,不然后面運行會出警告。
3.接下來就是,輸入0,輸入待測試文件所在的路徑,注意:這里的路徑是絕對路徑
4.然后選擇要測試的項目,我們輸入1 ,回車,表示對NIST的16個檢測都進行測試。
5.接下來,程序詢問我們是否選擇默認的參數設置,這里無所謂,如果你的數據足夠大的話,[1]對應的那個128可以變大些,直接輸1然后回車就可以更改,博主改成了20000,當然不改也可以。
非常重要的是這里有個 How many bitstreams這個問題,這里一定要與之前的數據段長度對應,之前數據段是1M,那128M的數據就就是128個比特流,30M的數據就是30個流。
128M的數據就就是128個比特流,這里就可以選一個比128小的數,比如100,代表只檢驗前100M數據的隨機性。
6.接下來,程序詢問我們待測數據的存放各式。由于我的數據文件格式是二進制,數據文件里只有0和1,所以輸入0
圖片是截的別的博主的圖,這里根據自己的數據選擇即可
7.之后,測試工具在屏幕上輸出一行英文提示:統計測試進行中…。
接下來,耐心等待即可,運算時間與數據量有關。
當數據測試完成后,會在測試包所在目錄的experiments->AlgorithmTesting目錄下生成兩個測試報告文件,他們分別是finalAnalysisReport.txt和freq.txt。
NIST軟件使用過程中可能的出錯
igamc: UNDERFLOW 這個實際上是報錯,好像是數據下溢的意思,出現原因可能是上面的第6步里面0和1選錯了,可以換一換試試。還有個原因就是數據量與數據段與數據流的關系不對,比如30M的數據,一個數據段1M,數據流那里如果大于30,就會出問題,一般是
數據量=數據段長度*數據流個數
P-value全是0 這個原因很多,首先導致igamc: UNDERFLOW的問題可能也會導致P-value全是0,還有就是數據量太少,比如1000000個比特位,如果數據連1M都達不到,可能也會出現這個問題。
如何查看finalAnalysisReport.txt和freq.txt
首先前面16個文件夾分別對應16個檢驗,每個文件夾里都有各自的檢驗結果。
各自的檢驗結果如下,有兩個文件。
stats.txt文件里會給出每個數據段通過此檢驗的情況,success或者failure
然后finalAnalysisReport.txt文件是總的檢驗結果
打開之后,如下所示
PROPORTION是所有數據段中通過檢驗的比例。右邊那個是檢驗的名稱,其中Non開頭那個比較特殊,它雖然是一個檢驗,但會出現多個P-value值。當然也是大于0.01認為隨機。
所有P-value都大于等于0.01即可認為通過了NIST檢驗。
總結
NIST的檢驗和結果分析都已完成了,這篇博客參考的博客有:
博客: link.
希望這篇博客能給別人帶來幫助。
總結
以上是生活随笔為你收集整理的NIST随机数测试软件下载,安装、和使用,分析方法最新版(19年4月)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Python代码实现NIST随机性测试
- 下一篇: C语言入门(初识C语言)