bingli-borland / GMT_Randomness_Test

《GMT 0005-2021 随机性检测规范》 国密随机数检测工具

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

GMT_Randomness_Test

国密随机数检测工具

所需依赖

本项目需要第三方包 scipy 以便于进行科学计算,安装命令为:

pip install scipy

运行方式

程序通过main.py可以直接运行。

python main.py

使用说明

  1. 工具分为“通过文件读入”和“通过文本框读入两种方式”,读入的内容均为01字符串
  2. 在“通过文件读入”中提供了两种打开文件的方式:
    • “通过二进制比特流读入内容”模式中,打开的文件会以二进制比特流读入,进行随机性检测
    • “以字符串形式读入文件中的0和1”模式中,需要保证文件中是以可读字符串的方式存入01串的,不能含有其他字符。否则程序会弹窗提示。程序中提供了一个测试文件 bitstest.txt
  3. 在“通过文本框读入两种方式”中,请在文本框内输入01字符串。并且提供了可以生成一定长度测试用例的选项,建议使用小于20000长度的测试样例。
  4. $\alpha$​ 为显著性水平,表示根据收集到的数据进行统计分析,以确定是否有足够的证据来拒绝原假设并接受备择假设。显著性水平定义了在进行假设检验时拒绝原假设的标准。它表示了我们愿意犯错误的概率。默认情况下为0.05或0.01。
  5. 由于没有进行充分的优化,在处理长度大于50000的01串时,程序会明显的卡顿,请小心使用。
  6. 计算得到正确结果后,会通过弹窗输出检测信息。同时也会通过控制台输出详细的日志。

参数设置

检测的模式选择中允许用户自定义调用函数的参数,请在mode_setting.json中的user_mode中修改对应的参数。

参数的设置请参考样例,采用列表内包含字典的方式,每个检测方式可以通过设置多组参数进行多次测试。

参数的意义为:

  • m:分块大小
  • k:算法中的操作次数
  • d:平移位数
  • L、Q:Maurer中初始序列包括Q个L位的非重叠子序列

运行结果

10000位:

50000位:

100000位:

参考资料

  • 《GM/T 0005-2021 随机性检测规范》
  • 《GB/T 32915-2016 信息安全技术二元序列随机性检测方法》

About

《GMT 0005-2021 随机性检测规范》 国密随机数检测工具

License:BSD 3-Clause "New" or "Revised" License


Languages

Language:Python 100.0%