随机数检测(五)- 检测工具
- 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)。
                

















