NIST随机性测试ASCII输入文件创建及assess位流参数取值咨询
NIST SP 800-22 随机数测试实操问题解答
符合规范的ASCII输入文件创建方法
按照NIST SP 800-22r1a的输入要求,按以下步骤生成文件即可:
- 先统一位序规则:把每个32位随机数按照你生成时的逻辑顺序(高位到低位,和你随机数输出的端序保持一致)拆成单个二进制位,不要保留0x、进制标记这类额外标识。
- 优先选择纯二进制位流格式(新手零踩坑):把所有拆分出的
0/1字符按顺序连续拼接,整个文件里不要加入任何空格、换行、注释、样本计数、文件头等额外内容,所有字符只能是0或者1。举个例子:如果前两个随机数是全0、全1,文件里就是连续32个0后接连续32个1,没有其他字符。 - 可选整数字节流格式:如果是长序列测试,你也可以把位流按8位拆成字节,把每个字节的十进制/十六进制值按顺序写入文件,但必须提前在工具配置里匹配对应的数值进制,不建议新手用这种格式,很容易因为位序、进制不匹配出问题。
- 避坑提醒:不要在文件开头写总样本数、总位长这类说明文字,assess工具不会自动跳过自定义头,会把这些字符当成位流内容解析,直接导致测试结果完全错误。
.\assess bitstream位流长度参数取值
正确取值为100032=32000,其余两个可选值均错误,依据如下:
- 该参数的明确定义是:待测试位流包含的总二进制位数,既不是随机数的样本个数,也不是单个随机数的位宽。
- 错误选项的问题:
- 选1000时,工具仅会读取输入文件的前1000位,相当于只用到了约31个32位随机数,剩下969个样本完全不会被纳入测试,样本量不足会导致大部分统计测试项直接报错,结果无统计意义。
- 选32时,工具仅读取前32位,也就是仅1个随机数样本,远达不到NIST测试的最小样本量门槛,所有测试项都会失效。
- 额外提示:32000位的总长度仅能覆盖部分基础测试项,NIST标准中多个测试项(比如块内频数测试、非重叠模板匹配测试、线性复杂度测试等)对总位长有更高要求,如果要得到具备统计显著性的完整测试结果,建议后续把样本量扩充到至少100万位以上。
内容的提问来源于stack exchange,提问作者nivedita
相关产品推荐
相关产品推荐

