NIST 在其官网地址 https://csrc.nist.gov/Projects/Random-Bit-Generation/Documentation-and-Software 上发布了 NIST SP 800-22 Revision 1a 文档和配套的测试软件包。测试软件包使用 C 语言开发,当前的下载地址是:https://csrc.nist.gov/CSRC/media/Projects/Random-Bit-Generation/documents/sts-2_1_2.zip 。这个软件只能在 Linux 下编译运行。
为了能让它在 Windows 下运行,Kravietz 制作了一个修改版的 NIST Statistical Test Suite for Random and Pseudorandom Number Generators 程序,并将其发布在: https://github.com/kravietz/nist-sts 。在该网页的说明中指出这个修改版程序在 Visual Studio 2008 下能够编译通过。我使用 Visual Studio 2010 进行了编译,结果报错。
不过我找到了另一种能编译通过的方法:先在 github 上下载修改版的 c 程序和 include 目录(其中包含头文件),使用 Visual Studio 2010 创建一个空控制台项目,然后将 c 程序添加到源文件列表中。接下来在项目的“属性”设置中,设定 C 程序的附加包含目录为 include 目录所在的路径,这样就可以编译程序了。在编译过程中,虽然会报出一大堆警告,但是能够编译出 exe 可执行程序。
在运行 exe 程序时,需要用到 NIST 发布的文件 sts-2_1_2.zip 中包含的两个子目录,名字分别为 experiments 和 templates。使用 sts-2_1_2.zip 中包含的样例数据文件 data.sha1 做随机性测试,执行过程及结果如下图所示:
测试结果被写入到 experiments\AlgorithmTesting\ 路径下的 finalAnalysisReport.txt 文件中,对于每一种测试,其对应的测试结果放在对应目录下的 txt 文件中。例如,近似熵测试的结果在路径 experiments\AlgorithmTesting\ApproximateEntropy\ 下的 results.txt 和 stats.txt 文件中可以看到。
如果不想按照本文描述的办法编译 Kravietz 制作的修改版程序,可以到这个网址直接下载我编译好的程序:https://download.csdn.net/download/henter/10706665