NIST随机数检测软件使用.docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

目录

一、NIST简介

二、博主错误记录

三、测试程序

四、NIST的使用

一、NIST简介

NIST是评判伪随机序列随机性的一种方法,包含16个测试,测试内容看这篇

/lafu5137/article/details因为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:M

ifret(i-1)0.5

ret(i)=2uret(i-1);

end

ifret(i-1)=0.5

ret(i)=2u(1-ret(i-1));

end

end

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:M

if(mod(i,8))

tmp=tmp+rand_bin_stream(i)power(2,8-(mod(i,8)));

else

tmp=tmp+rand_bin_stream(i);

fwrite(fid,tmp);

tmp=0;

end

end

fclose(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

选1

8、SelectTest(0tocontinue):0

选0

9、Howmanybitstreams?10

这里的参数就是你想让你的测试数据分成多少次参与测试,博主将数据分成10组,因此这个参数就是10.这里的输入数值与assess的输入参数相乘需要等于测试数据的总长度

10、选择输入文件的格式,博主的测试数据是二进制保存的,因此选1

11、计算结果分析

四、NIST的使用

1.输入

.

文档评论(0)

暗伤 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档