CN104298485A - 一种生成满足安全强度要求的随机数的方法 - Google Patents

一种生成满足安全强度要求的随机数的方法 Download PDF

Info

Publication number
CN104298485A
CN104298485A CN201410553538.5A CN201410553538A CN104298485A CN 104298485 A CN104298485 A CN 104298485A CN 201410553538 A CN201410553538 A CN 201410553538A CN 104298485 A CN104298485 A CN 104298485A
Authority
CN
China
Prior art keywords
random number
entropy
seed file
state value
buffer area
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201410553538.5A
Other languages
English (en)
Other versions
CN104298485B (zh
Inventor
陆舟
于华章
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Feitian Technologies Co Ltd
Original Assignee
Feitian Technologies Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Feitian Technologies Co Ltd filed Critical Feitian Technologies Co Ltd
Priority to CN201410553538.5A priority Critical patent/CN104298485B/zh
Publication of CN104298485A publication Critical patent/CN104298485A/zh
Application granted granted Critical
Publication of CN104298485B publication Critical patent/CN104298485B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Telephonic Communication Services (AREA)
  • Mobile Radio Communication Systems (AREA)

Abstract

本发明公开一种生成满足安全强度要求的随机数的方法,属于信息安全领域,所述方法包括:A:初始化熵值和内部随机数状态值,接收系统事件更新熵值和内部随机数状态值,判断是否达到随机数安全强度要求,是则执行C,否则根据第一随机数更新内部随机数状态值和熵值,判断是否达到随机数安全强度要求,是则执行C,否则根据第二随机数更新内部随机数状态值和熵值,执行B,B:判断是否达到随机数安全强度要求,是则执行C,否则调用系统函数,更新内部随机数状态值和熵值,返回B;C:根据待生成随机数的长度和内部随机数状态值,生成随机数。采用本发明的技术方案,能够实现生成的随机数随机性更强,更加能够满足对随机数的安全强度要求。

Description

一种生成满足安全强度要求的随机数的方法
技术领域
本发明涉及信息安全领域,尤其涉及一种生成满足安全强度要求的随机数的方法。
背景技术
随着计算机技术、通信技术和网络技术的迅速发展,信息在存储、传送、接收和处理过程中的安全问题已受到人们的广泛关注。随机数在信息安全系统中扮演着重要的角色,在基于计算机、网络通信和交易中有着广泛的应用基础。比如密钥产生、初始化向量、时间戳、认证挑战码、密钥协商等,都要用到随机数。
Openssl是一个强大的安全套接字层密码库,没有太多限制的开放源代码的软件包,囊括主要的密码算法、常用的密钥和证书封装管理功能及SSL协议,并提供丰富的应用程序供测试或其他目的使用。
随机数在计算机软件、硬件、安全等领域有着广泛的应用,因此,产生高效优质(即随机性高)的随机数变得非常重要。
发明内容
本发明为解决现有技术中存在的问题,提供了一种生成满足安全强度要求的随机数的方法。
本发明采用的技术方案是:一种生成满足安全强度要求的随机数的方法,包括:
步骤S1:随机数生成器初始化熵值和内部随机数状态值;
步骤S2:所述随机数生成器接收系统事件,根据所述系统事件更新所述熵值和所述内部随机数状态值;
步骤S3:所述随机数生成器根据更新后的所述熵值,判断是否达到随机数安全强度要求,如果是,则执行步骤S8,否则执行步骤S4;
步骤S4:所述随机数生成器根据第一随机数更新所述内部随机数状态值和所述熵值;
步骤S5:所述随机数生成器根据更新后的所述熵值,判断是否达到随机数安全强度要求,如果是,则执行步骤S8,否则执行步骤S6;
步骤S6:所述随机数生成器根据第二随机数更新所述内部随机数状态值和所述熵值;
步骤S7:所述随机数生成器根据更新后的所述熵值,判断是否达到随机数安全强度要求,如果是,则执行步骤S8,否则调用系统函数,更新所述内部随机数状态值和所述熵值,返回步骤S7;
步骤S8:所述随机数生成器根据待生成随机数的长度和所述内部随机数状态值,生成随机数。
所述步骤S2中,所述根据所述系统事件更新熵值和内部随机数状态值,具体为:所述随机数生成器根据所述系统事件,调用第一增加随机数熵值的函数,更新熵值和内部随机数状态值。
所述步骤S4具体为:
步骤S4-1:所述随机数生成器根据所述第一随机数和所述存放增加随机数的缓存区,调用预设标准库函数,将所述第一随机数复制到所述存放增加随机数的缓存区中;
步骤S4-2:所述随机数生成器根据所述存放增加随机数的缓存区中的数据和所述数据的长度,调用第二增加随机数熵值的函数,更新所述内部随机数状态值。
所述步骤S6具体为:
步骤S6-1:所述随机数生成器根据所述第二随机数和所述存放增加随机数的缓存区,调用预设标准库函数,将所述第二随机数复制到所述存放增加随机数的缓存区中;
步骤S6-2:所述随机数生成器根据所述存放增加随机数的缓存区中的数据和所述存放增加随机数的缓存区中的数据的长度,调用第三增加随机数熵值的函数,更新所述熵值和所述内部随机数状态值。
所述步骤S7中判断为否时,具体为:所述随机数生成器调用第四增加随机数熵值的系统函数,更新熵值和内部随机数状态值。
所述根据更新后的所述熵值,判断是否达到随机数安全强度要求,具体为:判断更新后的所述熵值是否达到预设值,如果是,则达到随机数安全强度要求,否则未达到随机数安全强度要求。
所述步骤S7判断为是时,还包括:
步骤a1:所述随机数生成器根据存放种子文件名称的缓存区的首地址和待生成的种子文件的长度,生成种子文件路径,将所述种子文件路径保存至所述种子文件名称的缓存区中;
步骤a2:所述随机数生成器根据所述存放种子文件名称的缓存区的首地址,生成预设长度的种子文件,根据所述种子文件更新所述内部随机数状态值,执行步骤S8。
所述步骤a1具体为:所述随机数生成器根据所述存放种子文件名称的缓存区的首地址和所述待生成的种子文件的长度,调用产生默认种子文件路径的函数,生成种子文件路径,将所述种子文件路径保存至所述存放种子文件名称的缓存区中。
所述步骤a1与所述步骤a2之间还包括:判断所述存放种子文件名称的缓存区中的数据是否为空,如果是,则结束,否则执行步骤a2。
所述步骤a2,具体为:
步骤a2-1:所述随机数生成器根据所述存放种子文件名称的缓存区的首地址,调用生成种子文件的函数,生成预设长度的种子文件;
步骤a2-2:所述随机数生成器根据所述存放种子文件名称的缓存区的首地址和所述种子文件的长度,调用加载种子文件的函数,更新内部随机数状态值。
所述步骤S8,还包括:判断是否成功生成随机数,如果是,则将所述随机数保存,并将所述内部随机数状态值置为初始值,结束,否则结束。
所述步骤S8,具体为:
步骤S8-1:所述随机数根据待生成随机数的长度和内部随机数状态值,调用生成随机数的函数,生成随机数,将函数返回值赋值给存储中间值;
步骤S8-2:判断所述存储中间值是否为预设值,如果是,则生成随机数成功,结束,否则生成随机数失败,结束。
所述将所述内部随机数状态值置为初始值,具体为:所述随机数生成器调用擦除内部随机数状态值的函数,将所述内部随机数状态值置为初始值。
本发明取得的有益效果是:采用本发明的技术方案,能够实现生产的随机数随机性更强,更加能够满足对随机数的安全强度要求。
附图说明
为了更清楚的说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单的介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例1提供的一种生成满足安全强度要求的随机数的方法流程图;
图2是本发明实施例2提供的一种生成满足安全强度要求的随机数的方法流程图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例1
本发明实施例1提供了一种生成满足安全强度要求的随机数的方法,如图1所示,包括:本发明通过调用OpenSSL的随机数生成的接口函数,实现生成符合预设要求的随机数,具体操作如下:
步骤101:随机数生成器初始化熵值和内部随机数状态值;
步骤102:随机数生成器接收系统事件,根据系统事件更新熵值和内部随机数状态值;
优选的,所述系统事件为windows系统事件,本实施例为鼠标移动消息WM_MOUSEMOVE;
其中,根据系统事件更新熵值和内部随机数状态值,具体为:调用第一增加随机数熵值的函数intRAND_event(UINT iMsg,WPARAM wParam,LPARAMlParam)函数,其中,iMsg为鼠标移动事件WM_MOUSEMOVE,wParam和lParam为横纵坐标值;
步骤103:随机数生成器根据熵值,判断是否达到随机数安全强度要求,如果是,则执行步骤108,否则执行步骤104;
具体为:判断熵值是否达到预设值,是则达到随机数安全强度要求,否则未达到随机数安全强度要求,优选的,预设值为32;
步骤104:随机数生成器根据第一随机数更新内部随机数状态值和熵值;
本实施例中,所述步骤104,具体包括:
步骤104-1:随机数生成器根据第一随机数和存放增加随机数的缓存区,调用预设标准库函数,将第一随机数复制到存放增加随机数的缓存区中;
步骤104-2:随机数生成器根据存放增加随机数的缓存区中的数据和该数据的长度,调用第二增加随机数熵值的函数,更新内部随机数状态值;
步骤105:随机数生成器根据熵值,判断是否达到随机数安全强度要求,如果是,则执行步骤108,否则执行步骤106;
步骤106:随机数生成器根据第二随机数更新内部随机数状态值和熵值;
步骤107:随机数生成器根据熵值,判断是否达到随机数安全强度要求,如果是,则执行步骤108,否则调用系统函数,更新内部随机数状态值和熵值,返回步骤107;
本实施例中,步骤107判断为是时还包括:
步骤a1:随机数生成器根据存放种子文件名称的缓存区的首地址和待生成的种子文件的长度,生成种子文件路径,将种子文件路径保存至种子文件名称的缓存区中;
步骤a2:随机数生成器根据存放种子文件名称的缓存区的首地址,生成预设长度的种子文件,根据种子文件更新内部随机数状态值,执行步骤108;
步骤108:随机数生成器根据待生成随机数的长度和内部随机数的状态值,生成随机数,结束;
本步骤还包括:判断是否成功生成随机数,如果是,则将随机数保存,并将内部随机数状态值置为初始值,结束,否则结束。
实施例2
本发明实施例2提供了一种生成满足安全强度要求的随机数的方法,如图2所示,包括:本发明通过调用OpenSSL的随机数生成的接口函数,实现生成符合预设要求的随机数,具体操作如下:
步骤201:随机数生成器初始化熵值和内部随机数状态值;
本实施例中,具体为:将熵值和内部随机数状态值均初始化为0;
步骤202:随机数生成器分配存放增加随机数的缓冲区、存放生成的随机数的缓冲区和存放种子文件名称的缓冲区;
本实施例中,随机数生成器分配的缓存区包括存放增加随机数的缓冲区(char buf[20])、存放生成的随机数的缓存区(char out[20])和存放种子文件名称的缓存区(char filename[50]);
步骤203:随机数生成器接收系统事件,根据系统事件调用第一增加随机数熵值的函数,更新熵值和内部随机数状态值;
优选的,熵值的初始值为0,内部随机数状态值的初始值为0;
本实施例中,第一增加随机数熵值的函数为intRAND_event(UINT iMsg,WPARAM wParam,LPARAM lParam)函数,其中,参数iMsg为通过事件类型接收熵值,本实施例优选的为Windows操作系统的鼠标移动消息(WM_MOUSEMOVE),参数wParam和lParam为该事件的两个特性,本实施例为横纵坐标值0,即调用RAND_event(WM_MOUSEMOVE,0,0)更新熵值和内部随机数状态值;
步骤204:随机数生成器根据更新后的熵值,判断是否达到随机数安全强度要求,如果是,执行步骤212,否则执行步骤205;
本实施例中,根据更新后的熵值,判断是否达到随机数安全强度要求,具体为:判断更新后的熵值是否为预设值,如果是,则达到随机数安全强度要求,否则未达到随机数安全强度要求;
优选的,所述预设值为32;
步骤205:随机数生成器根据存放增加随机数的缓存区和第一随机数,调用预设标准库函数,将第一随机数复制到存放增加随机数的缓冲区中;
本实施例中,第一随机数可以为预设值,也可以为用户输入的数值或者是满足随机性的估算值;
其中,优选的,预设标准库函数为C语言标准库函数;
具体的,随机数生成器通过调用C语言标准库函数strcpy(buf,"第一随机数")将第一随机数复制到存放增加随机数的缓冲区中;
例如,第一随机数为123456,则调用C语言标准库函数strcpy(buf,"123456"),将第一随机数123456复制到buf对应的存储区中,则buf中的数据为123456;
进一步的,本步骤还可以为:等待接收用户输入的第一随机数,当接收到用户输入的第一随机数后,根据存放增加随机数的缓存区和第一随机数,调用预设标准库函数,将第一随机数复制到存放增加随机数的缓冲区中;
步骤206:随机数生成器根据存放增加随机数的缓冲区和存放增加随机数的缓冲区的长度,调用第二增加随机数熵值的函数,更新熵值和内部随机数状态值;
本实施例中,第二增加随机数熵值的函数为void RAND_add(const void*buf,intnum),其中,buf为存放增加随机数的缓冲区的首地址,num为存放增加随机数的缓存区的长度即RAND_add(buf,strlen(buf)););
优选的,根据存放增加随机数的缓冲区和存放增加随机数的缓冲区的长度,应用哈希算法,更新熵值;
步骤207:随机数生成器根据更新后的熵值,判断是否达到随机数安全强度要求,如果是,执行步骤212,否则执行步骤208;
本实施例中,根据更新后的熵值,判断是否达到随机数安全强度要求,具体为:判断更新后的熵值是否为预设值,如果是,则达到随机数安全强度要求,否则未达到随机数安全强度要求;
优选的,预设值为32;
步骤208:随机数生成器根据存放增加随机数的缓存区和第二随机数,调用预设标准库函数,将第二随机数复制到存放增加随机数的缓冲区中;
本实施例中,第二随机数可以为预设值,也可以为用户输入的数值或者是满足随机性的估算值;
其中,优选的,预设标准库函数为C语言标准库函数;
具体的,随机数生成器通过调用C语言标准库函数strcpy(buf,"第二随机数")将第二随机数复制到存放增加随机数的缓冲区中;
例如,第二随机数为23424d,则调用C语言标准库函数strcpy(buf,"23424d"),将第二随机数23424d复制到buf对应的存储区中;
步骤209:随机数生成器根据存放增加随机数的缓冲区和存放增加随机数的缓冲区的长度,调用第三增加随机数熵值的函数,更新熵值和内部随机数的状态值;
本实施例中,通过调用第三增加随机数熵值的函数void RAND_seed(constvoid*buf,intnum),更新熵值和内部随机数的状态值,其中,buf为存放增加随机数的缓冲区的首地址,num为存放增加随机数的缓冲区的长度;
例如,存放增加随机数的缓冲区的长度为20,即调用RAND_seed(buf,20),更新内部随机数的状态值;
步骤210:随机数生成器根据更新后的熵值,判断是否达到随机数安全强度要求,如果是,则执行步骤212,否则执行步骤211;
本实施例中,根据更新后的熵值,判断是否达到随机数安全强度要求,具体为:判断更新后的熵值是否为预设值,如果是,则达到随机数安全强度要求,否则未达到随机数安全强度要求;
优选的,所述预设值为32;
步骤211:随机数生成器调用系统函数,更新内部随机数状态值,返回执行步骤210;
本实施例中,通过调用系统函数,即第四增加随机数熵值的函数RAND_poll(),更新内部随机数状态值;
步骤212:随机数生成器根据存放种子文件名称的缓存区的首地址和待生成的种子文件的长度,调用产生默认种子文件路径的函数,生成种子文件路径,将种子文件路径保存至存放种子文件名称的缓存区中;
本实施例中,产生默认种子文件路径的函数为RAND_file_name(char*filename,size_t size),其中,filename为存放种子文件名称的缓存区的首地址,size为待生成的种子文件的长度;
例如,待生成的种子文件的长度为50,即P=RAND_file_name(filename,50),将函数返回值赋值给存放默认种子文件路径的首地址P;
步骤213:随机数生成器判断存放种子文件名称的缓存区中的数据是否为空,如果是,则结束;否则,执行步骤214;
优选的,如果存放默认种子文件路径的首地址中的数据为空,表明产生默认种子文件失败,如果存放默认种子文件路径的首地址中的数据不为空,表明产生默认种子文件成功;
步骤214:随机数生成器根据存放种子文件名称的缓存区的首地址,调用生成种子文件的函数,生成预设长度的种子文件;
优选的,预设长度为1024字节;
本实施例中,生成种子文件的函数为RAND_write_file(const char*file),其中,file为默认种子文件路径的首地址,本实施例中为存放默认种子文件路径的首地址(char*p),即调用RAND_write_file(*p),生成1024字节的种子文件;
步骤215:随机数生成器根据默认种子文件路径的首地址和种子文件的长度,调用加载种子文件的函数,根据种子文件更新内部随机数的状态值;
本实施例中,加载种子文件的函数为:intRAND_load_file(const char*file,longbytes),其中,file为默认种子文件路径的首地址,本实施例中,为存放默认种子文件路径的首地址(char*p),bytes为需要加载的随机数的长度,优选的,需要加载的种子文件的长度为1024字节,当生成的种子文件的长度大于1024字节时,从生成的种子文件中截取1024字节,作为需要加载的随机数的长度,即调用RAND_load_file(*file,1024),根据1024字节长度的种子文件更新内部随机数的状态值;
步骤216:随机数生成器根据待生成随机数的长度和内部随机数的状态值,调用生成随机数的函数,生成随机数,将随机数保存至存放生成的随机数的缓冲区中,并将函数返回值赋值给存储中间值;
本实施例中,生成随机数的函数为intRAND_bytes(unsigned char*buf,intnum),其中,buf为存放生成的随机数的缓冲区,本实施例中,为存放生成的随机数的缓存区(char out[20]),num为待生成随机数的长度;
例如,待生成随机数的长度为20,即调用ret=RAND_bytes(out,20),将函数返回值赋值给存储中间值ret;
步骤217:随机数生成器根据存储中间值,判断生成随机数是否成功,如果是,则执行步骤218,否则结束;
本实施例中,根据存储中间值,判断生成随机数是否成功,具体为:判断存储中间值是否等于第一预设值,如果是,则生成随机数成功,否则生成随机数失败;
优选的,第一预设值为1;预先约定,当存储中间值ret1为1,表明随机数生成器生成随机数成功,当存储中间值ret1为0,表明随机数生成器生成随机数失败;
步骤218:随机数生成器调用擦除内部随机数状态值的函数,将内部随机数状态置为初始值,结束;
本实施例中,随机数生成器调用擦除内部随机数状态的函数voidRAND_cleanup(void),将内部保存的随机数状态清除为初始值0,结束。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。

Claims (13)

1.一种生成满足安全强度要求的随机数的方法,其特征在于,包括:
步骤S1:随机数生成器初始化熵值和内部随机数状态值;
步骤S2:所述随机数生成器接收系统事件,根据所述系统事件更新所述熵值和所述内部随机数状态值;
步骤S3:所述随机数生成器根据更新后的所述熵值,判断是否达到随机数安全强度要求,如果是,则执行步骤S8,否则执行步骤S4;
步骤S4:所述随机数生成器根据第一随机数更新所述内部随机数状态值和所述熵值;
步骤S5:所述随机数生成器根据更新后的所述熵值,判断是否达到随机数安全强度要求,如果是,则执行步骤S8,否则执行步骤S6;
步骤S6:所述随机数生成器根据第二随机数更新所述内部随机数状态值和所述熵值;
步骤S7:所述随机数生成器根据更新后的所述熵值,判断是否达到随机数安全强度要求,如果是,则执行步骤S8,否则调用系统函数,更新所述内部随机数状态值和所述熵值,返回步骤S7;
步骤S8:所述随机数生成器根据待生成随机数的长度和所述内部随机数状态值,生成随机数。
2.根据权利要求1所述的方法,其特征在于,所述步骤S2中,所述根据所述系统事件更新熵值和内部随机数状态值,具体为:所述随机数生成器根据所述系统事件,调用第一增加随机数熵值的函数,更新熵值和内部随机数状态值。
3.根据权利要求1所述的方法,其特征在于,所述步骤S4具体为:
步骤S4-1:所述随机数生成器根据所述第一随机数和所述存放增加随机数的缓存区,调用预设标准库函数,将所述第一随机数复制到所述存放增加随机数的缓存区中;
步骤S4-2:所述随机数生成器根据所述存放增加随机数的缓存区中的数据和所述数据的长度,调用第二增加随机数熵值的函数,更新所述内部随机数状态值。
4.根据权利要求1所述的方法,其特征在于,所述步骤S6具体为:
步骤S6-1:所述随机数生成器根据所述第二随机数和所述存放增加随机数的缓存区,调用预设标准库函数,将所述第二随机数复制到所述存放增加随机数的缓存区中;
步骤S6-2:所述随机数生成器根据所述存放增加随机数的缓存区中的数据和所述存放增加随机数的缓存区中的数据的长度,调用第三增加随机数熵值的函数,更新所述熵值和所述内部随机数状态值。
5.根据权利要求1所述的方法,其特征在于,所述步骤S7中判断为否时,具体为:所述随机数生成器调用第四增加随机数熵值的系统函数,更新熵值和内部随机数状态值。
6.根据权利要求1所述的方法,其特征在于,所述根据更新后的所述熵值,判断是否达到随机数安全强度要求,具体为:判断更新后的所述熵值是否达到预设值,如果是,则达到随机数安全强度要求,否则未达到随机数安全强度要求。
7.根据权利要求1所述的方法,其特征在于,所述步骤S7判断为是时,还包括:
步骤a1:所述随机数生成器根据存放种子文件名称的缓存区的首地址和待生成的种子文件的长度,生成种子文件路径,将所述种子文件路径保存至所述种子文件名称的缓存区中;
步骤a2:所述随机数生成器根据所述存放种子文件名称的缓存区的首地址,生成预设长度的种子文件,根据所述种子文件更新所述内部随机数状态值,执行步骤S8。
8.根据权利要求7所述的方法,其特征在于,所述步骤a1具体为:所述随机数生成器根据所述存放种子文件名称的缓存区的首地址和所述待生成的种子文件的长度,调用产生默认种子文件路径的函数,生成种子文件路径,将所述种子文件路径保存至所述存放种子文件名称的缓存区中。
9.根据权利要求7所述的方法,其特征在于,所述步骤a1与所述步骤a2之间还包括:判断所述存放种子文件名称的缓存区中的数据是否为空,如果是,则结束,否则执行步骤a2。
10.根据权利要求7所述的方法,其特征在于,所述步骤a2,具体为:
步骤a2-1:所述随机数生成器根据所述存放种子文件名称的缓存区的首地址,调用生成种子文件的函数,生成预设长度的种子文件;
步骤a2-2:所述随机数生成器根据所述存放种子文件名称的缓存区的首地址和所述种子文件的长度,调用加载种子文件的函数,更新内部随机数状态值。
11.根据权利要求1所述的方法,其特征在于,所述步骤S8,还包括:判断是否成功生成随机数,如果是,则将所述随机数保存,并将所述内部随机数状态值置为初始值,结束,否则结束。
12.根据权利要求11所述的方法,其特征在于,所述步骤S8,具体为:
步骤S8-1:所述随机数根据待生成随机数的长度和内部随机数状态值,调用生成随机数的函数,生成随机数,将函数返回值赋值给存储中间值;
步骤S8-2:判断所述存储中间值是否为预设值,如果是,则生成随机数成功,结束,否则生成随机数失败,结束。
13.根据权利要求11所述的方法,其特征在于,所述将所述内部随机数状态值置为初始值,具体为:所述随机数生成器调用擦除内部随机数状态值的函数,将所述内部随机数状态值置为初始值。
CN201410553538.5A 2014-10-17 2014-10-17 一种生成满足安全强度要求的随机数的方法 Active CN104298485B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201410553538.5A CN104298485B (zh) 2014-10-17 2014-10-17 一种生成满足安全强度要求的随机数的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201410553538.5A CN104298485B (zh) 2014-10-17 2014-10-17 一种生成满足安全强度要求的随机数的方法

Publications (2)

Publication Number Publication Date
CN104298485A true CN104298485A (zh) 2015-01-21
CN104298485B CN104298485B (zh) 2017-11-24

Family

ID=52318230

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410553538.5A Active CN104298485B (zh) 2014-10-17 2014-10-17 一种生成满足安全强度要求的随机数的方法

Country Status (1)

Country Link
CN (1) CN104298485B (zh)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107276998A (zh) * 2017-06-07 2017-10-20 广州华多网络科技有限公司 一种基于OpenSSL的性能优化方法及装置
CN109617684A (zh) * 2018-12-26 2019-04-12 绍兴心越科技有限公司 自修复主动防御式真随机数发生装置及生成方法
CN110399118A (zh) * 2019-07-15 2019-11-01 宇龙计算机通信科技(深圳)有限公司 一种随机数生成方法、装置、存储介质及电子设备
CN110851112A (zh) * 2019-11-06 2020-02-28 成都卫士通信息产业股份有限公司 一种随机比特生成方法、装置及电子设备和存储介质
CN112073186A (zh) * 2020-08-18 2020-12-11 浙江鸿城科技有限责任公司 一种增加随机函数种子熵值的方法
CN112306455A (zh) * 2020-03-26 2021-02-02 神州融安科技(北京)有限公司 机数生成方法、生成器、电子设备计算机可读存储介质

Non-Patent Citations (5)

* Cited by examiner, † Cited by third party
Title
SCOTT YILEK等: "When Private Keys are Public:Results from the 2008 Debian OpenSSL vulnerablility", 《ACM SIGCOMM CONFERENCE ON INTERNET MEASUREMENT》 *
朱鹏飞等: "一种对动态口令生成算法的量化评估方法", 《第28次全国计算机安全学术交流会论文集》 *
白手起家: "openssl中的几种随机数生成算法", 《UNIX技术网:HTTP://BBS.CHINAUNIX.NET/THREAD-3643266-1-1.HTML》 *
董海量等: "基于组合随机数的改进型Menezes-Vanstone算法", 《计算机应用与软件》 *
谭阳等: "基于动态熵值的随机数生成方法", 《计算机仿真》 *

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107276998A (zh) * 2017-06-07 2017-10-20 广州华多网络科技有限公司 一种基于OpenSSL的性能优化方法及装置
CN107276998B (zh) * 2017-06-07 2020-09-18 广州华多网络科技有限公司 一种基于OpenSSL的性能优化方法及装置
CN109617684A (zh) * 2018-12-26 2019-04-12 绍兴心越科技有限公司 自修复主动防御式真随机数发生装置及生成方法
CN110399118A (zh) * 2019-07-15 2019-11-01 宇龙计算机通信科技(深圳)有限公司 一种随机数生成方法、装置、存储介质及电子设备
CN110851112A (zh) * 2019-11-06 2020-02-28 成都卫士通信息产业股份有限公司 一种随机比特生成方法、装置及电子设备和存储介质
CN112306455A (zh) * 2020-03-26 2021-02-02 神州融安科技(北京)有限公司 机数生成方法、生成器、电子设备计算机可读存储介质
CN112306455B (zh) * 2020-03-26 2024-02-06 神州融安数字科技(北京)有限公司 随机数生成方法、生成器、电子设备计算机可读存储介质
CN112073186A (zh) * 2020-08-18 2020-12-11 浙江鸿城科技有限责任公司 一种增加随机函数种子熵值的方法

Also Published As

Publication number Publication date
CN104298485B (zh) 2017-11-24

Similar Documents

Publication Publication Date Title
CN104298485A (zh) 一种生成满足安全强度要求的随机数的方法
CN108235772B (zh) 基于区块链的数据处理方法、装置、存储介质及电子设备
CN110189121B (zh) 数据处理方法、装置、区块链客户端和区块链节点
CN110264200B (zh) 区块链数据处理方法及装置
CN110008665B (zh) 一种区块链的权限控制方法及装置
CN107295085B (zh) 应用信息处理及下载方法、服务器、客户端及终端设备
CN105718794A (zh) 基于vtpm对虚拟机进行安全保护的方法及系统
CN110955448A (zh) 智能合约分离方法、合约处理方法、装置、设备及介质
CN112862490A (zh) 一种异步网络下的输出共识方法
CN111177701A (zh) 基于可信执行环境和安全芯片的密码功能服务实现方法和设备
CN101710377A (zh) 实现软件许可服务的方法、装置及网络设备
US11146961B2 (en) Third party certificate management for native mobile apps and internet of things apps
CN113961226B (zh) 一种软件开发工具包修复方法、终端、服务器及设备
CN105187410A (zh) 一种应用的自升级方法及其系统
CN111400743B (zh) 基于区块链网络的事务处理方法、装置、电子设备和介质
WO2024103689A1 (zh) 状态变更方法、装置、设备及非易失性可读存储介质
US20160028704A1 (en) Establishing secure computing devices for virtualization and administration
CN112182518A (zh) 一种软件部署方法和装置
CN111859314A (zh) 一种基于加密软件的sm2加密方法、系统、终端及存储介质
CN111047444A (zh) 一种基于区块链网络的数据交易方法和装置
CN103546295A (zh) 一种动态移动签名系统及其方法
CN116126380A (zh) 一种固件升级方法、装置、电子设备及存储介质
CN104917763A (zh) 一种pin码缓存方法
CN112398908B (zh) 一种区块链网络节点删除方法、系统、存储介质和装置
CN113609156A (zh) 数据的查询与写入方法、装置、电子设备及可读存储介质

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant