随机数检测(五)- 检测工具
- 1 检测规范
- 2 检测量
- 3 检测项目
- 4 检测工具
1 检测规范
随机数检测应遵循GM/T 0005-2021和GM/T 0062-2018两个标准。
首先根据产品实际情况确定产品类型。
随机数检测量和检测项目可参考GM/T 0062-2018对不同类型产品的要求。不同检测项目的检测方法符合GM/T 0005-2021。
如果商用密码产品认证中遇到问题,欢迎加微信symmrz或13720098215沟通。
2 检测量
GM/T 0062规定不同类型产品对检测量的要求。
def getGMT0062TestParam(productType, testType):
if productType == 'A类产品':
if testType == '送样检测':
#送样检测要求1000个文件,每个128KB
return {'fileno':1000, 'filelen': 128*1024*8}
elif testType == '出厂检测':
#出厂检测要求1000组,每组10^6bit
return {'fileno':1000, 'filelen': 1000000}
elif testType == '上电检测':
return {'fileno':0, 'filelen': 0}
elif testType == '周期检测':
return {'fileno':0, 'filelen': 0}
elif testType == '单次检测':
return {'fileno':0, 'filelen': 0}
elif productType == 'B类产品':
if testType == '送样检测':
#送样检测要求1000个文件,每个128KB
return {'fileno':1000, 'filelen': 128*1024*8}
elif testType == '出厂检测':
#出厂检测要求不低于128bit
return {'fileno':1, 'filelen': 128}
elif testType == '上电检测':
return {'fileno':0, 'filelen': 0}
elif testType == '周期检测':
return {'fileno':0, 'filelen': 0}
elif testType == '单次检测':
#单次检测要求不低于128bit
return {'fileno':1, 'filelen': 128}
elif productType == 'C类产品':
if testType == '送样检测':
#送样检测要求1000个文件,每个128KB
return {'fileno':1000, 'filelen': 128*1024*8}
elif testType == '出厂检测':
#出厂检测要求不低于256bit
return {'fileno':1, 'filelen': 256}
elif testType == '上电检测':
#上电检测要求不低于256bit
return {'fileno':1, 'filelen': 256}
elif testType == '周期检测':
return {'fileno':0, 'filelen': 0}
elif testType == '单次检测':
#单次检测要求不低于256bit
return {'fileno':1, 'filelen': 256}
elif productType == 'D类产品':
if testType == '送样检测':
#送样检测要求1000个文件,每个128KB
return {'fileno':1000, 'filelen': 128*1024*8}
elif testType == '出厂检测':
#出厂检测要求不低于256bit
return {'fileno':1, 'filelen': 256}
elif testType == '上电检测':
#上电检测要求不低于10^4bit
return {'fileno':20, 'filelen': 10000}
elif testType == '周期检测':
#周期检测要求不低于10^4bit
return {'fileno':5, 'filelen': 10000}
elif testType == '单次检测':
#单次检测要求不低于256bit
return {'fileno':1, 'filelen': 256}
elif productType == 'E类产品':
if testType == '送样检测':
#送样检测要求1000个文件,每个128KB
return {'fileno':1000, 'filelen': 128*1024*8}
elif testType == '出厂检测':
#出厂检测要求不低于10^6bit
return {'fileno':50, 'filelen': 1000000}
elif testType == '上电检测':
#上电检测要求不低于10^6bit
return {'fileno':20, 'filelen': 1000000}
elif testType == '周期检测':
#周期检测要求不低于2*10^4bit
return {'fileno':20, 'filelen': 20000}
elif testType == '单次检测':
#单次检测要求不低于256bit
return {'fileno':1, 'filelen': 256}
return {'fileno':0, 'filelen': 0}
3 检测项目
def getGMT0062TestItems(productType, testType):
if productType == 'A类产品':
if testType == '送样检测':
#送样检测要求1000个文件,每个128KB
return getGMT0005TestItems(128*1024*8)
elif testType == '出厂检测':
#出厂检测要求1000组,每组10^6bit
return getGMT0005TestItems(1000000)
elif testType == '上电检测':
return []
elif testType == '周期检测':
return []
elif testType == '单次检测':
return []
elif productType == 'B类产品':
if testType == '送样检测':
#送样检测要求1000个文件,每个128KB
return getGMT0005TestItems(128*1024*8)
elif testType == '出厂检测':
#出厂检测要求不低于128bit
return [{'function':monobitFrequency}, {'function':poker, 'param1':2}]
elif testType == '上电检测':
return []
elif testType == '周期检测':
return []
elif testType == '单次检测':
#单次检测要求不低于128bit
return [{'function':poker, 'param1':2}]
elif productType == 'C类产品':
if testType == '送样检测':
#送样检测要求1000个文件,每个128KB
return getGMT0005TestItems(128*1024*8)
elif testType == '出厂检测':
#出厂检测要求不低于256bit
return [{'function':monobitFrequency}, {'function':poker, 'param1':2}]
elif testType == '上电检测':
#上电检测要求不低于256bit
return [{'function':poker, 'param1':2}]
elif testType == '周期检测':
return []
elif testType == '单次检测':
#单次检测要求不低于256bit
return [{'function':poker, 'param1':2}]
elif productType == 'D类产品':
if testType == '送样检测':
#送样检测要求1000个文件,每个128KB
return getGMT0005TestItems(128*1024*8)
elif testType == '出厂检测':
#出厂检测要求不低于256bit
return [{'function':monobitFrequency}, {'function':poker, 'param1':2}]
elif testType == '上电检测':
#上电检测要求不低于10^4bit
return [{'function':poker, 'param1':2}]
elif testType == '周期检测':
#周期检测要求不低于10^4bit
return [{'function':poker, 'param1':2}]
elif testType == '单次检测':
#单次检测要求不低于256bit
return [{'function':poker, 'param1':2}]
elif productType == 'E类产品':
if testType == '送样检测':
#送样检测要求1000个文件,每个128KB
return getGMT0005TestItems(128*1024*8)
elif testType == '出厂检测':
#出厂检测要求不低于10^6bit
return getGMT0005TestItems(1000000)
elif testType == '上电检测':
#上电检测要求不低于10^6bit
return getGMT0005TestItems(1000000)
elif testType == '周期检测':
#周期检测要求不低于2*10^4bit
return getGMT0005TestItems(20000)
elif testType == '单次检测':
#单次检测要求不低于256bit
return [{'function':poker, 'param1':2}]
return []
4 检测工具
符合GM/T 0062和GM/T 0005规范的随机数检测工具可以参考[随机数检测工具](https://download.csdn.net/download/Lapedius/88096928)。