在使用randomness前,请务必悉知 《randomness 免责声明》!
- 致谢 zhebinhu/randomnessTests 项目。
- 致谢 Sun Yimin 对本项目关键性建设。
该工具库实现了《GM/T 0005-2021 随机性检测规范》中描述的15种随机性检测方法。
若您需要使用相关测试工具需要可以 从Release中下载编译版本 或 手动编译程序,详见文档:
rddetector
检测工具只是randomness
的一种应用方式,randomness
提供丰富的API接口,您可以在根据需要定制化的使用。
安装randomness
:
go get -u github.com/Trisia/randomness
下面是10^6比特数据规模的扑克检测的例子:
package main
import (
"crypto/rand"
"fmt"
"github.com/Trisia/randomness"
)
func main() {
// 产生随机数序列
n := 1000_000
buf := make([]byte, n/8)
_, _ = rand.Read(buf)
// 转换为字节数组
bits := randomness.B2bitArr(buf)
// 运行测试组
p, _ := randomness.PokerTest(bits)
fmt.Printf("扑克检测 n: 1000000, P-value: %f\n", p)
}
更多API使用方法见:randomness API 文档
randomness
实现了 《GM/T 0025-2014 SSL VPN 网关产品规范》 5.4.4.3
随机数发生器 4个不同应用阶段的随机数检测:
使用方法见 测试用例 detect_test.go
如果您的主机处理器含有多个核心,那么可以使用Fast系列的API来加速检测,见 测试用例 detect_fast_test.go
注意:离散傅里叶检测 10^8 bit 规模数据检测为了加速计算单次检测需要消耗1024MB以上内存,请注意主机并发数量防止发生内存溢出(OOM)。
检测规范:
在 GM/T 0005-2021 中在 样本通过率判定 的基础上,增加了 样本均匀性判定 作为检测通过判定依据,详见 GM/T 0005-2021 6.3。
目前 randomness 已经升级至《GM/T 0005-2021 随机性检测规范》。
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。
1. 开源生态
2. 协作、人、软件
3. 评估模型