调用流程图

随机性检测STS代码和架构分析

1 调用流程图

main的执行流程说明

@assess.c

执行步骤

  1. 参数设定
  2. openOutputStreams // 打开各种输出结果文件(包括总的统计信息文件(个)和每个检测项的详细清单文件(个/项))
  3. invokeTestSuite//读取文件数据或者用随机数发生器生成数据,然后进行随机性检测
  4. postProcessResults // 检测结果的最后处理(统一度量值的计算)

3. invokeTestSuite读取文件数据或者用随机数发生器生成数据,然后进行随机性检测

@utilities.c

执行步骤

执行以下十种情况之一

  • fileBasedBitStreams//读取文件数据,然后进行随机性检测
  • lcg();//对伪随机数发生器的检测
  • quadRes1();//同上
  • quadRes2();//同上
  • cubicRes();//同上
  • exclusiveOR();//同上
  • modExp();//同上
  • bbs();//同上
  • micali_schnorr();//同上
  • SHA1();//同上

3.1 fileBasedBitStreams读取文件数据,然后进行随机性检测

@utilities.c

执行步骤

选择读取ASCII文件数据或者二进制文件数据,然后进行随机性检测

  • readBinaryDigitsInASCIIFormat //读取ASCII文件数据,然后进行随机性检测
  • readHexDigitsInBinaryFormat //读取二进制文件数据,然后进行随机

3.1.1 readHexDigitsInBinaryFormat //读取二进制文件数据进行检测

@ utilities.c

执行步骤

  1. 读取文件中的每个字节(会做字节内比特逆序)形成字节串
  2. 随机性检测 nist_test_suite

3.1.2 readBinaryDigitsInASCIIFormat读取ASCII文件数据进行检测

@ utilities.c

执行步骤

  1. 读取文件中的“1”和“0”形成比特串
  2. 比特串转字节串convert_epsilon_to_array
  3. 随机性检测 nist_test_suite

3.X.X.X convert_epsilon_to_array 比特串转字节串

@ generators.c

比特串转字节串

比特顺序为:一个字节中最低比特为第0比特,最高比特为第7比特。

3.X.X.X nist_test_suite随机性检测

@utilities.c

执行步骤

对设定的每一个检测项进行检测。

3.X 伪随机数发生器的检测(如lcg等)

@generators.c

执行步骤

  1. 用伪随机数发生器产生随机数
  2. 比特串转字节串 convert_epsilon_to_array
  3. 随机性检测 nist_test_suite
  4. postProcessResults检测结果的最后处理

@assess.c

执行步骤

  1. 特定处理
  2. computeMetrics //计算统一度量值

4.2 computeMetrics计算统一度量值

@assess.c

计算统一度量值

相关文章:

  • 2021-07-21
  • 2021-11-03
  • 2021-11-30
  • 2021-10-22
  • 2021-12-05
  • 2021-04-07
  • 2021-10-13
  • 2021-05-15
猜你喜欢
  • 2022-12-23
  • 2022-01-20
  • 2021-12-21
  • 2021-05-07
  • 2021-08-10
  • 2021-10-29
相关资源
相似解决方案