国密随机数检测工具
本项目需要第三方包 scipy
以便于进行科学计算,安装命令为:
pip install scipy
程序通过main.py可以直接运行。
python main.py
- 工具分为“通过文件读入”和“通过文本框读入两种方式”,读入的内容均为01字符串
- 在“通过文件读入”中提供了两种打开文件的方式:
- “通过二进制比特流读入内容”模式中,打开的文件会以二进制比特流读入,进行随机性检测
- “以字符串形式读入文件中的0和1”模式中,需要保证文件中是以可读字符串的方式存入01串的,不能含有其他字符。否则程序会弹窗提示。程序中提供了一个测试文件
bitstest.txt
- 在“通过文本框读入两种方式”中,请在文本框内输入01字符串。并且提供了可以生成一定长度测试用例的选项,建议使用小于20000长度的测试样例。
-
$\alpha$ 为显著性水平,表示根据收集到的数据进行统计分析,以确定是否有足够的证据来拒绝原假设并接受备择假设。显著性水平定义了在进行假设检验时拒绝原假设的标准。它表示了我们愿意犯错误的概率。默认情况下为0.05或0.01。 - 由于没有进行充分的优化,在处理长度大于50000的01串时,程序会明显的卡顿,请小心使用。
- 计算得到正确结果后,会通过弹窗输出检测信息。同时也会通过控制台输出详细的日志。
检测的模式选择中允许用户自定义调用函数的参数,请在mode_setting.json
中的user_mode
中修改对应的参数。
参数的设置请参考样例,采用列表内包含字典的方式,每个检测方式可以通过设置多组参数进行多次测试。
参数的意义为:
- m:分块大小
- k:算法中的操作次数
- d:平移位数
- L、Q:Maurer中初始序列包括Q个L位的非重叠子序列
10000位:
50000位:
100000位:
- 《GM/T 0005-2021 随机性检测规范》
- 《GB/T 32915-2016 信息安全技术二元序列随机性检测方法》