NIST随机数检测软件使用_第1页
NIST随机数检测软件使用_第2页
NIST随机数检测软件使用_第3页
NIST随机数检测软件使用_第4页
NIST随机数检测软件使用_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

目录一、NIST简介二、博主错误记录三、测试程序四、NIST的使用一、NIST简介NIST是评判伪随机序列随机性的一种方法,包含16个测试,测试内容看这篇/lafu5137/article/details/79593845因为NIST需要在Linux环境下运行,所以我们需要下载Cygwin去模拟LInux环境,下载教程看这几篇NIST下载教程(比较新)Cygwin安装教程(比较全)NIST下载、安装及使用(比较全)二、博主错误记录标注一个自己下载过程中出现的错误:在下载完Cygwin和NIST后,在Cygwin终端运行NIST,一定要输入正确的地址,我当时直接cd+win中make.file的路径直接复制然后回车,会提示:Nosuchfileordirectory的错误,然后百度无果,认为是安装两软件出现问题,然后查询相关解决办法,又认为自己是没有安装make文件并且又去官网下载最新的文件,发现问题还是没有解决,又认为是Cygwin需要编译环境,又去安装gcc编译环境,问题依然没有解决,最后突然发现我们这块要输入不是cdD:\cygwin64\sts-2.1.2\sts-2.1.2,而是cdD:/cygwin64/sts-2.1.2/sts-2.1.2,看到差异了吗\和/,前者是windows中直接复制的,后者是需要我们全部替换的可以在linux中识别的路径在以上输入正确路径后,我们再输入make命令,NIST软件就会安装,这时候在相同路径下会产生一个asses.exe可执行文件,这意味着NIST安装成功。三、测试程序1.为了测试该程序是否正常工作,需要生成一个测试序列,博主使用matlab随手生成了一个二进制伪随机序列tent_ode.m'''functionret=tent_ode(x,u,M)ret=zeros(M,1);ret(1)=x;fori=2:Mifret(i-1)<0.5ret(i)=2uret(i-1);endifret(i-1)>=0.5ret(i)=2u(1-ret(i-1));endend'''tent_out.m'''closeall;clear;M=102400;ret=tent_ode(0.1,0.99,M);rand_bin_stream=floor(mod(ret100,2));fid=fopen("rbs","w");tmp=0;fori=1:Mif(mod(i,8))tmp=tmp+rand_bin_stream(i)power(2,8-(mod(i,8)));elsetmp=tmp+rand_bin_stream(i);fwrite(fid,tmp);tmp=0;endendfclose(fid);'''2.博主使用的是帐篷映射来产生伪随机序列,为了尽可能的去除序列中的相关性,博主又截取了小数点后面若干位作为二进制伪随机序列,这里会生成一个102400长度的二进制伪随机序列。这段代码里面需要注意的是,伪随机序列是一个二进制比特流,这也是NIST唯一支持的格式。博主这里使用的是二进制方式保存二进制比特流,NIST也支持以ASCII方式保存的二进制比特流运行这段代码,打开输出的rbs文件3.如图,脚本生成了102400长度的伪随机二进制序列,且正确保存在了rbs中(注意,这个长度只能是32的整数倍,否则会出现一大堆igamc:underflow报错,有能力的可以看一下NIST原码,找一下原因)(此处存疑,应该是输入数据长度不够导致的)4.将rbs文件复制到linux下的当前目录中去(也可以是别的目录,NIST支持绝对路径),在终端中输入命令5.需要注意的是assess的参数,博主计划将该数据分为十组进行测试,102400/10=10240,因此assess的参数是10240,这个10240就是./assess<长度>的参数。6、EnterChoice:0输入0,该命令告诉app从文件中获取测试数据UserPrescribedInputFile:rbs输入rbs,告诉app测试数据在那个文件中7、EnterChoice:1选18、SelectTest(0tocontinue):0选09、Howmanybitstreams?10这里的参数就是你想让你的测试数据分成多少次参与测试,博主将数据分成10组,因此这个参数就是10.这里的输入数值与assess的输入参数相乘需要等于测试数据的总长度10、选择输入文件的格式,博主的测试数据是二进制保存的,因此选111、计算结果分析四、NIST的使用1.输入./assess.exe2.输入./assess.exe1000000表示将数据段的长度设置为1000000(bits)=1M(bits)。注意,NIST检验是按数据段来检验的,无论你原始的数据文件多大,都是分成小段,这里一段是一百万个比特位也就是1M。比如128M的数据就分成128段,30M的数据就分成30段。这里每段多长是可变的,但是数据段的长度应该至少大于1M(bits),因为有些检验要求输入的数据流至少要大于等于1M,不然后面运行会出警告。3.输入0,再输入待测试文件所在的路径(这里是绝对路径,也就是直接到达目标位置)04.选择要测试的项目,输入1,回车,表示16个NIST测试都要进行5.接下来,程序询问我们是否选择默认的参数设置,这里无所谓,如果你的数据足够大的话,[1]对应的那个128可以变大些,直接输1然后回车就可以更改,博主改成了20000,当然不改也可以。非常重要的是这里有个Howmanybitstreams这个问题,这里一定要与之前的数据段长度对应,之前数据段是1M,那128M的数据就就是128个比特流,30M的数据就是30个流。128M的数据就就是128个比特流,这里就可以选一个比128小的数,比如100,代表只检验前100M数据的随机性。6.接下来,程序询问我们待测数据的存放各式。由于我的数据文件格式是二进制,数据文件里只有0和1,所以输入07.具在屏幕上输出一行英文提示:统计测试进行中…。接下来,耐心等待即可,运算时间与数据量有关。8.当数据测试完成后,会在测试包所在目录的experiments->AlgorithmTesting目录下生成两个测试报告文件,他们分别是finalAnalysisReport.txt和freq.txt。9.查看finalAnalysisReport.txt和freq.txt首先前面16个文件夹分别对应16个检验,每个文件夹里都有各自的检验结果结果如下,有两个文件stats.txt文件里会给出每个数据段通过此检验的情况,success或者failurefinalAnalysisReport.txt文件是总的检验结果打开之后,如下所示PROPORTION是所有数据段中通过检验的比例。右边那个是检验的名称,其中Non开头那个比较特殊,它虽然是一个检验,但会出现多个P-value值。当然也是大于0.01认为随机。所有P-value都大于等于0.01即可认为通过了NIST检

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论