NIST随机数测试包下载安装、简单使用方法、测试流程

本文详细记录了在Windows环境下安装NIST随机数测试包的过程,包括Cygwin的安装,并分享了在生成和使用测试序列时遇到的乱码问题及其解决方案。测试序列需要是ASCII格式的0和1,无需空格隔开,且数据量需足够大以满足测试要求。通过NIST测试的关键在于随机性,测试序列长度和数据流个数需匹配。
摘要由CSDN通过智能技术生成

随机数测试包 NIST 下载安装、简单实用方法 记录

一、NIST、cygwin下载、安装

具体下载安装方法网上博客很多,下面是最近查阅浏览的一些:
(最近做有关此方向的项目,用到的链接会持续更新)
NIST测试包在linux下使用时,不用安装cygwin,在win系统下才需要用到cygwin

https://blog.csdn.net/zhaomengszu/article/details/79384050

下载时候没有选择make模块,或者makefile时候发现不能make,解决方法也在上面这个链接。

https://blog.csdn.net/weixin_39928192/article/details/89256576
https://www.cnblogs.com/lqerio/p/11798459.html
https://blog.csdn.net/qq_40714543/article/details/111170750

NIST随机性测试及参数范围

目前最新NIST随机数测试软件下载、安装、及使用教程

NIST数字测试套件使用说明

NIST-test-suite使用笔记

Cygwin安装教程

windows 安装cygwin教程

一、简单测试案例

记录一下我踩的坑。。。。
NIST测试序列的随机性时,需要读入一个文件,这个文件里放的是待测试序列。
一开始以为里面的序列要用空格隔开,所以用matlab生成随机0、1序列写入txt文件,当序列个数比较少的时候(比如几十个),此时txt文件里面显示正常,全是随机的0和1;但是当我把数据量加大,仅仅超过100个数字,txt文件就全乱码了。。。当时也没弄清为啥,我就试着用手敲进去的方式,在txt文件里随便敲入几个0和1,用空格隔开,然后复制粘贴,同样,个数大到一二百的时候,重新打开这个文件里面又全乱码了…就像下图这样:

在这里插入图片描述
上面是我复制粘贴整的,然后关闭这个文件,再次打开就是下图。。。:
在这里插入图片描述
当时想着可能是编码问题,于是另存为,改变编码,再次打开还是这样。。发现每次打开编码都自动变成UTF-16 LE。。到现在还不懂为啥,麻烦知道怎么解决的朋友指点一下,哈哈哈哈哈。

今天偶然间看到一个帖子,说数据不需要用空格隔开。。。这样就好弄了,按上述方法无脑复制了1M的0、1序列,主要是想把NIST测试的流程跑通。。数据文件见下图:
在这里插入图片描述
(上图,没有空格的话,打开文件编码自动就是UTF-8,有空格就自动是UTF-16 LE…)

然后就可以用NIST对它进行测试了,具体测试方法可见上面的几个博客链接。
如果操作没问题,会到这一步:
在这里插入图片描述
第一个箭头指的地方:数据流的个数,这个和之前数据段、待测试序列的长度是有关的。比如第一开始输入 ./assess.exe 1000,代表一个数据段是1000个比特的数据(也就是1000个0、1随机序列),然后此处how many bitstreams我输入6,则代表需要测试的序列长度是6*1000=6000个数据。这个6000一定要小于等于文件里的随机序列长度,如果文件里的序列长度小于6000就会报错。
第二个箭头:由于我的文件里都是ascii形式的0和1,所以选0;至于1-Binary那个字节是对应啥样的数据,没了解。
若一切顺利,测试成功的标志就是上图中蓝色框框。然后就可以到对应路径下分析测试结果了,路径怎么找?看本文开头推荐的几个链接。

若不太顺利。。。最后一步就会报错::
在这里插入图片描述
出现红色框子的东西就代表有问题。有好多种情况会导致这个问题。比如输入的序列个数太少、随机性太低、最后一步选择数据格式不对等等,这个要一一排查。

上面说到我复制了1000000的序列,当开始测试时,也报了上图的错误,显然随机性不够,然后尝试用C语言生成了10000个随机01序列(中间不加空格),写入文件,再次测试就可以通过了。

网上说测试序列要大于1000000,看来只要随机性高一点,序列短一些也可以通过测试,但不能太短。

  • 5
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
NIST SP-800-90B是由美国国家标准与技术研究院(NIST)发布的一项测试标准,用于评估生成的随机数序列的质量。该标准主要含四个测试方法:熵测试、比特偏倚测试、重叠测试和掩码测试。 熵测试是用来评估随机数生成器生成的随机数序列的“混乱程度”。这个测试会检查序列中的每个元素出现的概率,如果概率分布均匀,就认为生成的随机数序列有较高的熵。 比特偏倚测试用于检测生成的随机数序列中比特位0和1的分布是否接近均匀。如果比特位的分布没有明显的偏向,就认为生成的随机数序列通过了比特偏倚测试。 重叠测试是通过检测生成的随机数序列中是否存在子序列的重复来评估生成器的性能。如果生成的序列中不存在重叠,就认为生成的随机数序列通过了重叠测试。 掩码测试是一种更严格的测试方法,用于检测生成的随机数序列中是否存在可预测性。该测试会检查序列中是否存在由其他部分推导或预测得出的信息,以评估随机数序列的安全性。 通过以上四个测试方法NIST SP-800-90B可以评估随机数生成器生成的随机数序列的质量和安全性。这对于保证密码学安全、安全通信和随机事件模拟等领域至关重要。该测试标准的使用可以帮助开发者选择和评估随机数生成器,并确保生成的随机数序列满足需求和安全标准。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值