GitHub上的随机性检测工具sp800_22_tests介绍:(1)在Windows下的使用

    David Johnston 在 GitHub 上发布了一个名为 sp800_22_tests 的工具,网址是:https://github.com/dj-on-github/sp800_22_tests ,它是一个用 Python 语言写的程序集,能够根据 NIST SP 800-22 文档的要求,检测随机数集合的随机性,包括以下 15 种测试种类:
    monobit_test
    frequency_within_block_test
    runs_test
    longest_run_ones_in_a_block_test
    binary_matrix_rank_test
    dft_test
    non_overlapping_template_matching_test
    overlapping_template_matching_test
    maurers_universal_test
    linear_complexity_test
    serial_test
    approximate_entropy_test
    cumulative_sums_test
    random_excursion_test
    random_excursion_variant_test
    测试程序的运行方法是执行以下指令:
python  sp800_22_tests.py  二进制随机数文件名
    该测试程序适用于Python 2.7,在 Python 2.6 和 Python 3下运行都有问题。为了能在一台安装Windows 7操作系统、Python 3.6.5的计算机上运行测试程序,需要做以下特别处理:
1)安装必要的第三方库;该测试程序需要用到 argparse 和 NumPy,在 Windows 的命令提示符界面下,执行以下命令进行安装:
easy_install argparse
pip install numpy
2)为了符合 Python 3 的语法规则要求,修改 python 源程序,做以下修改:
    a) 将所有 Python 源程序中出现的 print 改为 print( ) 函数形式;
    b) 将所有 Python 源程序中出现的 xrange 改为 range;
    c) 修改 sp800_22_dft_test.py 文件,将 37 行:mags = abs(fs)[:n/2] # Compute magnitudes of first half of sequence
改为:mags = abs(fs)[:n//2]
    d)修改 sp800_22_tests.py 文件,将 36 行:byte = ord(bytech)
改为:byte = bytech
    按照以上步骤修改过以后,测试程序就可以在 Python 3.6.5 下运行了。在网页 https://csrc.nist.gov/projects/random-bit-generation/documentation-and-software 上提供了一个随机性测试工具的下载链接:https://csrc.nist.gov/CSRC/media/Projects/Random-Bit-Generation/documents/sts-2_1_2.zip ,接下来使用这个 zip 文件中 /sts-2.1.2/data 路径下包含的随机数集合样例文件 data.sha1 来做测试,执行命令:
python sp800_22_tests.py data.sha1

    除了 overlapping_template_matching_test 这一项测试因为输入的随机数数量太少、不满足测试要求以外,其他项测试都通过了,测试结果截图如下:



猜你喜欢

转载自blog.csdn.net/henter/article/details/80506593