参考博客
NIST随机性测试
美国国家标准与技术研究所提供的测试,一共包括16种测试手段,具体内容可参考此博客
NIST下载与安装
环境:Windows 11
下载:
NIST 官网链接
点击download下载安装包
Cygwin 官网链接
点击setup-x86_64.exe下载安装包
安装:
NIST下载得到sts-2.1.2的压缩包,直接解压到文件夹。
Cygwin下载的setup-x86_64.exe,双击进行安装
step 1 点击下一页
step 2 选择 Install from Internet,下一页
step 3 选择安装目录,下一页
step 4 选择组件包位置,下一页
step 5 选择Direct Connection,下一页
step 6 选择下载站点,我这里用了第三行,下载速度很快
step 7 选择组件包,View处选择Category,点击All前的加号,找到Devel,在里面选择binutils,gcc,gcc-mingw,gdb,make,由于我也没有找到gcc-mingw,于是把所有gc开头的包都选择上。
找到对应的文件名,双击skip自动选择最新版本,也可以点击下拉选择自己需要的版本,然后在src?一栏打勾。
全部选择完毕后,点击下一页,等待安装完成。
NIST测试
安装完成后进行一个简单的测试
实验数据:由matlab生成的0,1序列,存为txt文件
代码:
x = round (rand (1,100000000));%生成随机的01序列
fp = fopen ('testfornist.txt', 'a');
fprintf (fp,'%d',x);
fclose (fp);
将该txt文件放到sts-2.1.2目录下
运行 Cygwin的setup目录下的Cygwin
step 1 输入cd sts-2.1.2的文件目录,注意反斜杠修改为斜杠
step 2 输入make,没有问题即可进行下一步,此处没有图片,与参考博客中的图片一样
step 3 输入./assess.exe
step 4 输入./assess.exe 100000
数字表示设置检验的长度为100000个bit,NIST测试会将数据切分成小段进行检验,此数据可以进行调整,但是注意不要超过待检验数据的总长度,否则会出错,NIST官网说最好设置为1000000,即1M数据
step 5 Enter Choice:0 回车后输入待测试txt文件的绝对路径
如果路径出错,可以重复step 4
step 6 Enter Choice:1 选择1表示测试全部进行
step 7 Select Test:0
step 8 How many bitstreams? 80
这一步选择有多少数据流,可以由数据总长度除以step 4中设置的长度,然后取整,只要比这个数字小就可以,否则会出现underflow的错误。
step 9 Select input mode:0
等待测试结束,出现Statistical Testing Complete!!!!!!
再次使用时从cd目录开始,但不用make,make仅在第一次确认安装好即可
在sts-2.1.2的目录下选择experiments,打开后选择Algorithm Testing,里面一共有15个文件夹,两个txt文件。
(虽然NIST测试一共有16个测试,但是此软件只有15个测试项,具体测试项见此链接)
每个文件夹中包含results.txt和stats.txt两个文件,results.txt中是一列p_value数据,stats.txt中有更详细的数据,如果检测通过会显示success。
两个txt文件是对待检测文件总体的测试结果。