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

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

Info

Publication number
CN104298485B
CN104298485B CN201410553538.5A CN201410553538A CN104298485B CN 104298485 B CN104298485 B CN 104298485B CN 201410553538 A CN201410553538 A CN 201410553538A CN 104298485 B CN104298485 B CN 104298485B
Authority
CN
China
Prior art keywords
random number
entropy
state value
storage
seed file
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.)
Active
Application number
CN201410553538.5A
Other languages
English (en)
Other versions
CN104298485A (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

  • Mobile Radio Communication Systems (AREA)
  • Telephonic Communication Services (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,LPARAM lParam)函数,其中,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:随机数生成器分配存放增加随机数的缓冲区、存放生成的随机数的缓冲区和存放种子文件名称的缓冲区;
本实施例中,随机数生成器分配的缓存区包括存放增加随机数的缓冲区(charbuf[20])、存放生成的随机数的缓存区(char out[20])和存放种子文件名称的缓存区(char filename[50]);
步骤203:随机数生成器接收***事件,根据***事件调用第一增加随机数熵值的函数,更新熵值和内部随机数状态值;
优选的,熵值的初始值为0,内部随机数状态值的初始值为0;
本实施例中,第一增加随机数熵值的函数为intRAND_event(UINT iMsg,WPARAMwParam,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(const void*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,long bytes),其中,file为默认种子文件路径的首地址,本实施例中,为存放默认种子文件路径的首地址(char*p),bytes为需要加载的随机数的长度,优选的,需要加载的种子文件的长度为1024字节,当生成的种子文件的长度大于1024字节时,从生成的种子文件中截取1024字节,作为需要加载的随机数的长度,即调用RAND_load_file(*file,1024),根据1024字节长度的种子文件更新内部随机数的状态值;
步骤216:随机数生成器根据待生成随机数的长度和内部随机数的状态值,调用生成随机数的函数,生成随机数,将随机数保存至存放生成的随机数的缓冲区中,并将函数返回值赋值给存储中间值;
本实施例中,生成随机数的函数为intRAND_bytes(unsigned char*buf,intnum),其中,buf为存放生成的随机数的缓冲区,本实施例中,为存放生成的随机数的缓存区(charout[20]),num为待生成随机数的长度;
例如,待生成随机数的长度为20,即调用ret=RAND_bytes(out,20),将函数返回值赋值给存储中间值ret;
步骤217:随机数生成器根据存储中间值,判断生成随机数是否成功,如果是,则执行步骤218,否则结束;
本实施例中,根据存储中间值,判断生成随机数是否成功,具体为:判断存储中间值是否等于第一预设值,如果是,则生成随机数成功,否则生成随机数失败;
优选的,第一预设值为1;预先约定,当存储中间值ret1为1,表明随机数生成器生成随机数成功,当存储中间值ret1为0,表明随机数生成器生成随机数失败;
步骤218:随机数生成器调用擦除内部随机数状态值的函数,将内部随机数状态置为初始值,结束;
本实施例中,随机数生成器调用擦除内部随机数状态的函数void RAND_cleanup(void),将内部保存的随机数状态清除为初始值0,结束。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。

Claims (12)

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

Families Citing this family (6)

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

Non-Patent Citations (5)

* Cited by examiner, † Cited by third party
Title
openssl中的几种随机数生成算法;白手起家;《Unix技术网:http://bbs.chinaunix.net/thread-3643266-1-1.html》;20111222;第1-2页 *
When Private Keys are Public:Results from the 2008 Debian OpenSSL vulnerablility;Scott Yilek等;《Acm Sigcomm Conference on Internet Measurement》;20091231;第15-27页 *
一种对动态口令生成算法的量化评估方法;朱鹏飞等;《第28次全国计算机安全学术交流会论文集》;20131024;正文第3.2小节代码部分 *
基于动态熵值的随机数生成方法;谭阳等;《计算机仿真》;20101130;第27卷(第11期);第87-90页 *
基于组合随机数的改进型Menezes-Vanstone算法;董海量等;《计算机应用与软件》;20111231;第28卷(第12期);第78-80页 *

Also Published As

Publication number Publication date
CN104298485A (zh) 2015-01-21

Similar Documents

Publication Publication Date Title
CN104298485B (zh) 一种生成满足安全强度要求的随机数的方法
USRE49393E1 (en) Preventing shortened lifetimes of security keys in a wireless communications security system
CN108235772B (zh) 基于区块链的数据处理方法、装置、存储介质及电子设备
CN102682506B (zh) 基于对称密码技术的智能蓝牙门禁控制方法及装置
CN102915263A (zh) 一种数据备份方法、***和设备
CN104836664A (zh) 一种执行业务处理的方法、装置和***
CN108156180A (zh) 一种基于Android智能移动终端的通信密钥分配方法
CN204360381U (zh) 移动设备
CN108109245A (zh) 解锁方法、***、智能门锁、移动终端及存储介质
CN103458400A (zh) 一种语音加密通信***中的密钥管理方法
CN112987942B (zh) 键盘输入信息的方法、装置、***、电子设备和存储介质
CN109670344A (zh) 加密装置、方法及片上***
CN106355106A (zh) 一种账户信息存储方法及***
CN103139163B (zh) 数据访问方法、服务器和终端
CN104915602A (zh) 一种Android平台下的PIN码保护方法
CN108599944A (zh) 一种基于手机身份的验证码短信透明加密方法
CN107124409A (zh) 一种接入认证方法及装置
CN114567470A (zh) 一种基于sdk的多***下密钥拆分验证***及方法
CN107977581A (zh) 数据处理方法、装置及计算机可读存储介质
CN114697008B (zh) 基于量子安全sim卡的通信***及方法、量子安全sim卡、密钥服务平台
CN113922956A (zh) 基于量子密钥的物联网数据交互方法、***、设备及介质
CN106951771A (zh) 一种安卓操作***的移动终端使用方法
CN107094036A (zh) 一种基于蓝牙通讯的密钥处理方法及蓝牙终端
CN112333699B (zh) 一种物联网通信协议加密方法、设备及存储介质
Novak et al. Efficient partial firmware update for IoT devices with lua scripting interface

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