一种随机数生成方法及装置与流程

文档序号:23806684发布日期:2021-02-03 11:49阅读:106来源:国知局
一种随机数生成方法及装置与流程

[0001]
本发明涉及计算机技术领域,特别是涉及一种随机数生成方法及装置。


背景技术:

[0002]
随机数发生器作为安全芯片等安全设备中不可或缺的一部分,其能够为安全系统提供具有充分随机性的随机数,以使与信息加解密相关的应用使用随机数发生器输出的随机数,形成加密系统中的密钥、授权认证信息以及完整性认证信息等数据。
[0003]
目前,芯片随机数发生器,定型量产后其产生硬件随机数的随机性是固定不变的,随着安全标准的不断提高,其在安全系统上的应用中输出随机数的随机性可能将不能符合安全系统的安全要求,会给安全系统带来一定的安全隐患。若使安全系统内的随机数发生器能够输出随机性满足安全系统安全需求的随机数,通常采用直接更换随机数发生器所在硬件,更换后的硬件上设置有能够输出随机性满足安全系统安全需求随机数的新的随机数发生器,此种方式,更换成本较大,且直接淘汰已有产品造成资源浪费。可见,如何在兼容原硬件环境,平衡硬件资源占用与改造成本的情况下,针对随机数发生器输出的随机数的随机性进行不同级别定制优化,是目前亟需解决的问题。


技术实现要素:

[0004]
有鉴于此,本发明提出了一种随机数生成方法及装置,主要目的在于对原有随机数发生器输出的随机数的随机性进行不同级别定制优化。
[0005]
第一方面,本发明提供了一种随机数生成方法,该方法包括:
[0006]
获取随机数发生器输出的n个第一随机数,其中,n大于或等于1,通过调整n的大小确定输出第二随机数随机性的优化级别;
[0007]
每获取一个所述第一随机数,计算所述第一随机数的第一内部状态,并基于所述第一内部状态进行哈希运算,得到所述第一随机数对应的随机数分段;
[0008]
对各所述第一随机数的随机数分段进行拼合处理,形成第二随机数。
[0009]
第二方面,本发明提供了一种随机数生成装置,该装置包括:
[0010]
获取单元,用于获取随机数发生器输出的n个第一随机数,其中,n大于或等于1,通过调整n的大小确定输出第二随机数随机性的优化级别;
[0011]
运算单元,用于每获取一个所述第一随机数,计算所述第一随机数的第一内部状态,并基于所述第一内部状态进行哈希运算,得到所述第一随机数对应的随机数分段;
[0012]
拼合单元,用于对各所述第一随机数的随机数分段进行拼合处理,形成第二随机数。
[0013]
第三方面,本发明提供了一种计算机可读存储介质,所述存储介质包括存储的程序,其中,在所述程序运行时控制所述存储介质所在设备执行第一方面所述的随机数生成方法。
[0014]
第四方面,本发明提供了一种存储管理设备,所述存储管理设备包括:
[0015]
存储器,用于存储程序;
[0016]
处理器,耦合至所述存储器,用于运行所述程序以执行第一方面所述的随机数生成方法。
[0017]
借由上述技术方案,本发明提供的随机数生成方法及装置,通过调整随机数发生器输出第一随机数的数量的大小确定输出第二随机数随机性的优化级别。每获取一个随机数发生器输出的第一随机数时,计算该第一随机数的第一内部状态,并基于第一内部状态进行哈希运算,得到第一随机数对应的随机数分段。当计算出预设数量的第一随机数对应的随机数分段之后,对各第一随机数的随机数分段进行拼合处理,形成第二随机数。可见,本发明提供的方案无需改动部署有随机数发生器的硬件,便可直接利用随机数发生器输出的随机数作为输入,使用哈希算法运算加强随机数发生器输出的随机数的随机性,从而完成对随机数发生器输出的随机数的随机性进行不同级别定制优化。
[0018]
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
[0019]
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0020]
图1示出了本发明一个实施例提供的一种随机数生成方法的流程图;
[0021]
图2示出了本发明另一个实施例提供的一种随机数生成方法的流程图;
[0022]
图3示出了本发明又一个实施例提供的一种随机数生成方法的流程图;
[0023]
图4示出了本发明一个实施例提供的一种随机数生成装置的结构示意图;
[0024]
图5示出了本发明另一个实施例提供的一种随机数生成装置的结构示意图。
具体实施方式
[0025]
下面将参照附图更加详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
[0026]
如图1所示,本发明实施例提供了一种随机数生成方法,该方法主要包括:
[0027]
101、获取随机数发生器输出的n个第一随机数,其中,n大于或等于
[0028]
1,通过调整n的大小确定输出第二随机数随机性的优化级别。
[0029]
在实际应用中,为了对一些产生随机数随机性不高的随机数发生器进行改进,则将这些需要进行随机数随机性优化的随机数发生器选取为输出第一随机数的随机数发生器。该随机数发生器可以是部署在usbkey、智能密码设备、智能认证设备或安全芯片等硬件上的随机数发生器。本实施例对该随机数发生器的具体类型不作具体限定,可选的,该随机数发生器可以为真随机数发生器,也可以为伪随机数发生器。另外,需要说明的是,本实施
例在对随机数发生器输出的随机数的随机性进行优化时,不用对部署随机数发生器的设备或芯片进行硬件改动,直接基于随机数发生器输出的随机数便可以完成优化。通过这种对随机数发生器输出的随机数的随机性进行优化的方式,能够使老式硬件或芯片输出随机性满足安全系统安全需求的随机数,从而延长老式硬件或芯片的产品生命周期。
[0030]
在实际应用中,在对随机数发生器输出的随机数进行优化时,需要获取随机数发生器输出的n个第一随机数,通过调整n的大小确定输出第二随机数随机性的优化级别。其中,n越大则输出第二随机数随机性的优化级别越高,n越小则输出第二随机数随机性的优化级别越低。可根据随机数发生器输出随机数的随机强度,定制随机数发生器所输出的第一随机数的字符长度和数量,从而灵活把控随机数随机性的优化过程。下面对随机数发生器所输出的第一随机数的字符长度和数量进行说明:
[0031]
随机数发生器所输出的第一随机数的字符长短可以通过如下方法确定:一是,为了得到符合业务需求的随机数,则随机数发生器输出的第一随机数的字符长度为用户设定的;二是,为了保证随机数较优的随机性,则随机数发生器输出的第一随机数的字符长度为随机数发生器输出随机性最优的字符长度,最优长度需平衡后续运算硬件资源占用,随机数产生效率等因素。
[0032]
随机数发生器所输出的第一随机数的数量可以通过如下方法确定:一个随机数用于确定一个随机数分段,每个随机数分段具有特定字符长度,故根据预期的第二随机数的字符长度以及每个随机数分段的字符长度,确定获取的第一随机数的数量。示例性的,每个随机数分段均具有10个字符长度,预期的第二随机数的字符长度为40个字符长度,则需要获取随机数发生器输出的4个第一随机数。
[0033]
需要说明的是,n个第一随机数可以是随机数发生器连续输出的随机数。另外,为了提高第二随机数的随机性,则所获取的随机数发生器输出的n个第一随机数可以具有不同的字符长度。
[0034]
102、每获取一个所述第一随机数,计算所述第一随机数的第一内部状态,并基于所述第一内部状态进行哈希运算,得到所述第一随机数对应的随机数分段。
[0035]
第一内部状态可以看作生成第二随机数的种子,是生成第二随机数的基础,其直接决定着第二随机数的随机性。本实施例中,由于每一个随机数分段生成所使用的第一内部状态均是依据相应的第一随机数而得,因此各随机数分段随机性较高,从而使得依据各随机数分段而得的第二随机数的随机性较优。
[0036]
下面对计算第一随机数的第一内部状态的方法进行说明,该方法包括如下步骤一至步骤二:
[0037]
步骤一,确定第一随机数对应的样本内部状态。
[0038]
具体的,样本内部状态的确定与第一随机数是第几位进行第一内部状态计算有关,故该确定第一随机数对应的样本内部状态的方法至少包括如下几种:
[0039]
一是,当第一随机数为首个进行第一内部状态计算的第一随机数时,将与第一随机数相邻的上一个第一随机数确定为第一随机数对应的样本内部状态。
[0040]
具体的,为了确定首个进行第一内部状态计算的第一随机数的样本内部状态,则需要获取随机数发生器输出的与该第一随机数相邻的上一个第一随机数,无需计算该上一个第一随机数的随机数分段,仅是将该上一个第一随机数作为首个进行第一内部状态计算
的第一随机数的样本内部状态。示例性,首个进行第一内部状态计算的第一随机数为第一随机数1,在该第一随机数1之前,随机数发生器输出了第一随机数0,该第一随机数0与第一随机数1相邻,则将该第一随机数0确定为该第一随机数1的样本内部状态。
[0041]
二是,当第一随机数为非首个进行第一内部状态计算的第一随机数时,将与第一随机数相邻的上一个第一随机数的第一内部状态,确定为第一随机数对应的样本内部状态。
[0042]
具体的,当第一随机数为非首个进行第一内部状态计算的第一随机数时,则为了保证所生成的第二随机数的随机性,则需使用上一个第一随机数的第一内部状态为该非首个进行第一内部状态计算的第一随机数的样本内部状态。这种操作不仅使得每次生成的随机数分段分别与前次存在关联,而且可以保证每次使用的样本内部状态不同,从而保证每个第一随机数所得的随机数分段的随机性。
[0043]
示例性,第一随机数2为非首个进行第一内部状态计算的第一随机数,在其之前第一随机数1已经进行过第一内部状态的计算,且确定出了第一随机数1对应的随机数分段,故将第一随机数1的第一内部状态确定为第一随机数2的样本内部状态。
[0044]
三是,对与第一随机数相邻的上一个第一随机数的样本内部状态和第二预设数值中的至少一种,进行哈希运算,得到所述上一个第一随机数的第二内部状态;基于上一个第一随机数的第一内部状态和第二内部状态,确定所述第一随机数对应的样本内部状态。
[0045]
此种方法为上述的第二种方法是并列的技术方案,在实用应用中可以根据具体的业务要求灵活选用。
[0046]
具体的,当第一随机数为非首个进行第一内部状态计算的第一随机数时,则为了保证所生成的第二随机数的随机性,则需使用上一个第一随机数的第一内部状态和第二内部状态,为该非首个进行第一内部状态计算的第一随机数确定样本内部状态。这种操作不仅使得每次生成的随机数分段分别与前次存在关联,而且可以保证每次使用的样本内部状态不同,从而保证每个第一随机数所得的随机数分段的随机性。
[0047]
下面对确定上一个第一随机数的第二内部状态的方法进行说明,该方法包括如下两种:
[0048]
当仅根据与第一随机数相邻的上一个第一随机数的样本内部状态或第二预设数值,进行哈希运算,得到上一个第一随机数的第二内部状态时,则根据如下公式(1)进行哈希运算,该公式(1)为:v2=h(a‖v01),其中,v2表征上一个第一随机数的第二内部状态,v01表征上一个第一随机数的样本内部状态,a表征第二预设数值,h表征哈希运算,‖表征逻辑或。需要说明的是,第二预设数值可以基于业务需求设定,可选的,可为常量,亦可为可变数列。
[0049]
当需根据与第一随机数相邻的上一个第一随机数的样本内部状态和第二预设数值,进行哈希运算,得到上一个第一随机数的第二内部状态时,则对与第一随机数相邻的上一个第一随机数的样本内部状态和第二预设数值进行拼接;对拼接结果进行哈希运算,得到上一个第一随机数的第二内部状态。其中,在拼接时,与第一随机数相邻的上一个第一随机数的样本内部状态可以位于第二预设数值之前,也可以位于第二预设数值之后。可选的,该过程可通过如下公式(2)实现,该公式(2)为:v2=h(a+v01),其中,v2表征上一个第一随机数的第二内部状态,v01表征上一个第一随机数的样本内部状态,a表征第二预设数值,h
表征哈希运算,+表征拼接。需要说明的是,第二预设数值可以基于业务需求设定,可选的,可为常量,亦可为可变数列。
[0050]
下面对基于上一个第一随机数的第一内部状态和第二内部状态,确定所述第一随机数对应的样本内部状态的方法进行说明,该方法具体包括如下过程:对上一个第一随机数的第一内部状态和第三预设数值中的至少一种进行哈希运算,得到哈希运算结果;拼接哈希运算结果、上一个第一随机数的第一内部状态、上一个第一随机数的第二内部状态和第四预设数值;将拼接结果对第五预设数值的取余结果,确定为第一随机数对应的样本内部状态。
[0051]
当仅对上一个第一随机数的第一内部状态或第三预设数值进行哈希运算时,直接进行哈希运算即可。当需要对上一个第一随机数的第一内部状态和第三预设数值进行哈希运算时,则需要先拼接上一个第一随机数的第一内部状态和第三预设数值,然后对拼接结果进行哈希运算。
[0052]
在对哈希运算结果、上一个第一随机数的第一内部状态、上一个第一随机数的第二内部状态和第四预设数值进行拼接时,拼接顺序可以根据业务要求确定本实例不做具体限定。
[0053]
第五预设数值可以基于业务要求确定,也可以根据随机数分段的字符长度确定。可选的,第五预设数值可以为2的len次方,其中,len表征随机数分段的字符长度。
[0054]
示例性的,基于上一个第一随机数的第一内部状态和第二内部状态,确定第一随机数对应的样本内部状态的过程,可以通过如下公式(3)实现,该公式(3)为:v02=(v1+h(d‖v1)+v2+e)mod2

len其中,v02表征第一随机数对应的样本内部状态,v1表征上一个第一随机数的第一内部状态,h表征哈希运算,d第三预设数值,v2表征上一个第一随机数的第二内部状态,e表征第四预设数值,mod表征取余函数,

表征次方符号,len表征随机数分段的字符长度。
[0055]
步骤二,对第一随机数、第一预设数值以及样本内部状态中的至少一种,进行哈希运算,得到第一随机数的第一内部状态。
[0056]
具体的,对第一随机数、第一预设数值以及样本内部状态中的至少一种,进行哈希运算,得到第一随机数的第一内部状态的方法包括如下两种:
[0057]
当仅根据第一随机数或第一预设数值或样本内部状态,进行哈希运算,得到第一随机数的第一内部状态时,则根据如下公式(4)进行哈希运算,该公式(4)为:v3=h(b‖a‖v02),其中,v3表征第一随机数的第一内部状态,v02表征第一随机数的样本内部状态,b表征第一预设数值,h表征哈希运算,‖表征逻辑或。需要说明的是,第一预设数值可以基于业务需求设定,可选的,可为常量,亦可为可变数列。
[0058]
当需要对第一随机数、第一预设数值以及样本内部状态中的至少两种,进行哈希运算,得到第一随机数的第一内部状态时,则对第一随机数、第一预设数值以及样本内部状态中的至少两种进行拼接,并对拼接结果进行哈希运算,得到第一随机数的第一内部状态。需要说明的是,第一随机数、第一预设数值以及样本内部状态中的至少两种的拼接顺序可以基于业务要求确定,这里不作具体限定。示例性的,根据如下公式(5)进行哈希运算,该第二公式为:v3=h(b+a+v02),其中,v3表征第一随机数的第一内部状态,v02表征第一随机数的样本内部状态,b表征第一预设数值,h表征哈希运算,+表征拼接。需要说明的是,第一预
设数值可以基于业务需求设定,可选的,b为1。
[0059]
下面对基于第一内部状态进行哈希运算,得到第一随机数对应的随机数分段的方法进行说明,该方法具体包括:对第一内部状态和第六预设数值中的至少一种进行哈希运算,得到哈希运算结果;拼接第一内部状态和哈希运算结果,并将拼接结果对第七预设数值的取余;对取余结果进行哈希运算,得到第一随机数对应的随机数分段。
[0060]
当仅对第一内部状态或第六预设数值进行哈希运算时,直接进行哈希运算即可。当需要对第一内部状态和第六预设数值进行哈希运算时,则需要先拼接第一内部状态和第六预设数值,然后对拼接结果进行哈希运算。
[0061]
在对哈希运算结果和第一内部状态进行拼接时,拼接顺序可以根据业务要求确定本实例不做具体限定。
[0062]
第七预设数值可以基于业务要求确定,也可以根据随机数分段的字符长度确定。可选的,第七预设数值可以为2的len次方,其中,len表征随机数分段的字符长度。
[0063]
示例性的,基于第一内部状态进行哈希运算,得到第一随机数对应的随机数分段的过程,可以通过如下公式(6)实现,该公式(6)为:t=h(v3+h(f‖v3)mod2

len其中,t表征第一随机数对应的随机数分段,v3表征第一随机数的第一内部状态,h表征哈希运算,f表征第六预设数值,mod表征取余函数,

表征次方符号,len表征随机数分段的字符长度。
[0064]
103、对各所述第一随机数的随机数分段进行拼合处理,形成第二随机数。
[0065]
在实际应用中,当第一随机数的数量仅为一个时,则无需对该第一随机数的随机数分段进行拼合处理,直接将该第一随机数的随机数分段作为第二随机数即可。当第一随机数的数量为两个或两个以上时,每一个第一随机数分别存在其各自的随机数分段,为了得到随机性较优的第二随机数,则需要通过对各第一随机数的随机数分段进行拼接处理的方式来得到第二随机数。
[0066]
下面对各第一随机数的随机数分段进行拼合处理的方法进行说明,该拼合处理方法至少包括如下两种方法:
[0067]
方法一,为各第一随机数的随机数分段分配拼合顺序;按照各随机数分段的拼合顺序,拼合各第一随机数的随机数分段,形成第二随机数。
[0068]
这里所述的拼合顺序的分配至少包括如下几种:
[0069]
第一种,按照随机数发生器输出各第一随机数的输出顺序,为各第一随机数的随机数分段分配拼合顺序。
[0070]
示例性的,第一随机数1对应随机数分段1、第二随机数对应随机数分段2以及第三随机数对应随机数分段3。随机数发生器依次输出第一随机数1、第一随机数2和第三随机数3,则随机数分段1的拼接顺序位于第一位,随机数分段2的拼接顺序位于第二位,随机数分段3的拼接顺序位于第三位。
[0071]
第二种,通过预设接口读取各第一随机数的随机数分段的预设拼合顺序,基于预设拼合顺序为各第一随机数的随机数分段分配拼合顺序。
[0072]
具体的,预设拼合顺序是用户基于其拼合要求预先设定,并存储在特定的存储位置的,在需要对随机数分段进行拼合处理时,通过预设接口从特定的存储位置中读取该预设拼合顺序。可选的,该预设接口可以为api接口。由于该预设拼合顺序是用于提前预设到存储位置,因此随机数分段的拼合顺序能够最大限度的满足用户的拼合需求。
[0073]
示例性的,预设拼合顺序为:随机数分段3的拼合顺序位于第一位,随机数分段1的拼合顺序位于第二位,随机数分段2的拼合顺序位于第三位。通过预设接口读取预设拼接顺序后,为各随机数分段分配的拼合顺序如下所示:随机数分段3的拼合顺序位于第一位,随机数分段1的拼合顺序位于第二位,随机数分段2的拼合顺序位于第三位。
[0074]
第三种,随机为各第一随机数的随机数分段分配拼合顺序。
[0075]
具体的,由于随机数分段的拼合顺序是随机分配的,无任何规律可循,因此按照这种拼合顺序拼合各随机数分段而得的第二随机数,具有最优的随机性。
[0076]
方法二,从各第一随机数的随机数分段中分别提取具有设定长度的字符串;拼合所提取的各字符串,形成第二随机数。
[0077]
具体的,从各第一随机数的随机数分段中提取字符串的方法为:确定各第一随机数的随机数分段的提取位置以及提取字符长度,基于提取位置和提取字符长度提取字符串。
[0078]
需要说明的是,各第一随机数的随机数分段的提取位置可以相同也可以不同,各第一随机数的随机数分段的提取字符长度可以相同也可以不同。
[0079]
示例性的,第一随机数1的随机数分段和第二随机数的随机数分段均为由10个字符组成的字符串,从第一随机数1的随机数分段中提取位于前5位的字符,从第一随机数2的随机数分段中提取位于前5位的字符。
[0080]
示例性的,第一随机数1的随机数分段和第二随机数的随机数分段均为由10个字符组成的字符串,从第一随机数1的随机数分段中提取位于前5位的字符,从第一随机数2的随机数分段中从位于第2位的开始连续提取5个字符。
[0081]
具体的,在从各第一随机数的随机数分段中分别提取具有设定长度的字符串之后,需要拼合所提取的各字符串,为了提高拼和而得的第二随机数的随机性,则该字符串的拼合方法至少包括如下几种:一是,按照随机数发生器输出各第一随机数的输出顺序,为从各第一随机数的随机数分段中提取的字符串分配拼合顺序,根据所分配的拼合顺序拼接各所提取的字符串。二是,通过预设接口读取各第一随机数的随机数分段的预设拼合顺序,基于预设拼合顺序为从各第一随机数的随机数分段中提取的随机数分段分配拼合顺序,根据所分配的拼合顺序拼接各所提取的字符串。三是,随机拼合各所提取的字符串。
[0082]
本发明实施例提供的随机数生成方法,通过调整随机数发生器输出第一随机数的数量的大小确定输出第二随机数随机性的优化级别。每获取一个随机数发生器输出的第一随机数时,计算该第一随机数的第一内部状态,并基于第一内部状态进行哈希运算,得到第一随机数对应的随机数分段。当计算出预设数量的第一随机数对应的随机数分段之后,对各第一随机数的随机数分段进行拼合处理,形成第二随机数。可见,本发明实施例提供的方案无需改动部署有随机数发生器的硬件,便可直接利用随机数发生器输出的随机数作为输入,使用哈希算法运算加强随机数发生器输出的随机数的随机性,从而完成对有随机数发生器输出的随机数的随机性进行不同级别定制优化。
[0083]
进一步的,根据图1所示的方法,本发明的另一个实施例还提供了一种随机数生成方法,如图2所示,所述方法主要包括:
[0084]
201、确定所述随机数发生器的随机性。
[0085]
当由随机数产生器产生的随机数的随机性不足时,则随机数发生器输出的随机数
将提供低安全性,因为需要确定该随机数发生器的随机性。确定该随机数发生器的随机性的方法包括:一是,确定随机数发生器输出的随机数之间是否存在明显联系;二是,确定随机数发生器输出的随机数在分布区域内是否平均;三是,确定随机数发生器输出的随机数是否在较短的时间内出现循环。
[0086]
202、基于所述随机性确定第一随机数长度。
[0087]
在确定出随机数发生器的随机性之后,确定第一随机数的长度。随机数发生器输出该长度的第一随机数,该第一随机数的随机性较优,各输出的第一随机数之间不存在明显联系,且各第一随机数在分布区域内分布平局,且在预设的时长内输出的各第一随机数未出现循环。
[0088]
203、控制所述随机数发生器输出具有所述第一随机数长度的第一随机数。
[0089]
204、获取随机数发生器输出的n个第一随机数。
[0090]
具体的,可通过调整n的大小确定输出第二随机数随机性的优化级别。
[0091]
205、每获取一个所述第一随机数,确定所述第一随机数是否为首个进行第一内部状态计算的第一随机数;若是,执行206;否则,执行207。
[0092]
206、当所述第一随机数为首个进行第一内部状态计算的第一随机数时,将与所述第一随机数相邻的上一个第一随机数确定为所述第一随机数对应的样本内部状态,并执行208。
[0093]
207、当所述第一随机数为非首个进行第一内部状态计算的第一随机数时,将与所述第一随机数相邻的上一个第一随机数的第一内部状态,确定为所述第一随机数对应的样本内部状态。
[0094]
208、对所述第一随机数、第一预设数值以及所述样本内部状态中的至少一种,进行哈希运算,得到所述第一随机数的第一内部状态。
[0095]
209、对所述第一内部状态和第六预设数值中的至少一种进行哈希运算,得到哈希运算结果。
[0096]
210、拼接所述第一内部状态和所述哈希运算结果,并将拼接结果对第七预设数值的取余。
[0097]
211、对取余结果进行哈希运算,得到所述第一随机数对应的随机数分段。
[0098]
212、按照所述随机数发生器输出各所述第一随机数的输出顺序,为各所述第一随机数的随机数分段分配拼合顺序。
[0099]
213、按照各随机数分段的拼合顺序,拼合各所述第一随机数的随机数分段,形成所述第二随机数。
[0100]
进一步的,根据图1所示的方法,本发明的另一个实施例还提供了一种随机数生成方法,如图3所示,所述方法主要包括:
[0101]
301、确定所述随机数发生器的随机性。
[0102]
302、基于所述随机性确定第一随机数长度。
[0103]
303、控制所述随机数发生器输出具有所述第一随机数长度的第一随机数。
[0104]
304、获取随机数发生器输出的n个第一随机数。
[0105]
305、每获取一个所述第一随机数,确定所述第一随机数是否为首个进行第一内部状态计算的第一随机数;若是,执行306;否则,执行307。
[0106]
306、当所述第一随机数为首个进行第一内部状态计算的第一随机数时,将与所述第一随机数相邻的上一个第一随机数确定为所述第一随机数对应的样本内部状态,并执行311。
[0107]
307、对与所述第一随机数相邻的上一个第一随机数的样本内部状态和第二预设数值中的至少一种,进行哈希运算,得到所述上一个第一随机数的第二内部状态。
[0108]
308、对所述上一个第一随机数的第一内部状态和第三预设数值中的至少一种进行哈希运算,得到哈希运算结果。
[0109]
309、拼接哈希运算结果、所述上一个第一随机数的第一内部状态、所述上一个第一随机数的第二内部状态和第四预设数值。
[0110]
310、将拼接结果对第五预设数值的取余结果,确定为所述第一随机数对应的样本内部状态。
[0111]
311、对所述第一随机数、第一预设数值以及所述样本内部状态中的至少一种,进行哈希运算,得到所述第一随机数的第一内部状态。
[0112]
312、对所述第一内部状态和第六预设数值中的至少一种进行哈希运算,得到哈希运算结果。
[0113]
313、拼接所述第一内部状态和所述哈希运算结果,并将拼接结果对第七预设数值的取余。
[0114]
314、对取余结果进行哈希运算,得到所述第一随机数对应的随机数分段。
[0115]
315、从各所述第一随机数的随机数分段中分别提取具有设定长度的字符串。
[0116]
316、拼合所提取的各字符串,形成所述第二随机数。
[0117]
进一步的,依据上述方法实施例,本发明的另一个实施例还提供了一种随机数生成装置,如图4所示,所述装置包括:
[0118]
获取单元41,用于获取随机数发生器输出的n个第一随机数,其中,n大于或等于1,通过调整n的大小确定输出第二随机数随机性的优化级别;
[0119]
运算单元42,用于每获取一个所述第一随机数,计算所述第一随机数的第一内部状态,并基于所述第一内部状态进行哈希运算,得到所述第一随机数对应的随机数分段;
[0120]
拼合单元43,用于对各所述第一随机数的随机数分段进行拼合处理,形成第二随机数。
[0121]
本发明实施例提供的随机数生成装置,通过调整随机数发生器输出第一随机数的数量的大小确定输出第二随机数随机性的优化级别。每获取一个随机数发生器输出的第一随机数时,计算该第一随机数的第一内部状态,并基于第一内部状态进行哈希运算,得到第一随机数对应的随机数分段。当计算出预设数量的第一随机数对应的随机数分段之后,对各第一随机数的随机数分段进行拼合处理,形成第二随机数。可见,本发明实施例提供的方案无需改动部署有随机数发生器的硬件,便可直接利用随机数发生器输出的随机数作为输入,使用哈希算法运算加强随机数发生器输出的随机数的随机性,从而完成对有随机数发生器输出的随机数的随机性进行不同级别定制优化。
[0122]
可选的,如图5所示,拼合单元43,包括:
[0123]
分配模块431,用于为各所述第一随机数的随机数分段分配拼合顺序;
[0124]
第一拼合模块432,用于按照各随机数分段的拼合顺序,拼合各所述第一随机数的
随机数分段,形成所述第二随机数。
[0125]
可选的,如图5所示,分配模块431,用于按照所述随机数发生器输出各所述第一随机数的输出顺序,为各所述第一随机数的随机数分段分配拼合顺序;或,通过预设接口读取各所述第一随机数的随机数分段的预设拼合顺序,基于所述预设拼合顺序为各所述第一随机数的随机数分段分配拼合顺序。
[0126]
可选的,如图5所示,所述拼合单元43包括:
[0127]
提取模块433,用于从各所述第一随机数的随机数分段中分别提取具有设定长度的字符串;
[0128]
第二拼合模块434,用于拼合所提取的各字符串,形成所述第二随机数。
[0129]
可选的,如图5所示,所述装置还包括:
[0130]
确定单元44,用于确定所述随机数发生器的随机性;基于所述随机性确定第一随机数长度;
[0131]
控制单元45,用于控制所述随机数发生器输出具有所述第一随机数长度的第一随机数。
[0132]
可选的,如图5所示,所述运算单元42包括:
[0133]
确定模块421,用于确定所述第一随机数对应的样本内部状态
[0134]
第一运算模块422,用于对所述第一随机数、第一预设数值以及所述样本内部状态中的至少一种,进行哈希运算,得到所述第一随机数的第一内部状态。
[0135]
可选的,如图5所示,第一确定模块421,用于当所述第一随机数为首个进行第一内部状态计算的第一随机数时,将与所述第一随机数相邻的上一个第一随机数确定为所述第一随机数对应的样本内部状态。
[0136]
可选的,如图5所示,第一确定模块421,用于当所述第一随机数为非首个进行第一内部状态计算的第一随机数时,将与所述第一随机数相邻的上一个第一随机数的第一内部状态,确定为所述第一随机数对应的样本内部状态。
[0137]
可选的,如图5所示,第一确定模块421,用于对与所述第一随机数相邻的上一个第一随机数的样本内部状态和第二预设数值中的至少一种,进行哈希运算,得到所述上一个第一随机数的第二内部状态;基于所述上一个第一随机数的第一内部状态和第二内部状态,确定所述第一随机数对应的样本内部状态。
[0138]
可选的,如图5所示,第一确定模块421,具体用于对所述上一个第一随机数的第一内部状态和第三预设数值中的至少一种进行哈希运算,得到哈希运算结果;拼接哈希运算结果、所述上一个第一随机数的第一内部状态、所述上一个第一随机数的第二内部状态和第四预设数值;将拼接结果对第五预设数值的取余结果,确定为所述第一随机数对应的样本内部状态。
[0139]
可选的,如图5所示,第一确定模块421,具体用于对与所述第一随机数相邻的上一个第一随机数的样本内部状态和第二预设数值进行拼接;对拼接结果进行哈希运算,得到所述上一个第一随机数的第二内部状态。
[0140]
可选的,如图5所示,第一运算模块422,用于对所述第一随机数、所述第一预设数值以及所述样本内部状态中的至少两种进行拼接;对拼接结果进行哈希运算,得到所述第一随机数的第一内部状态。
[0141]
可选的,如图5所示,所述运算单元42包括:
[0142]
第二运算模块423,用于对所述第一内部状态和第六预设数值中的至少一种进行哈希运算,得到哈希运算结果;拼接所述第一内部状态和所述哈希运算结果,并将拼接结果对第七预设数值的取余;对取余结果进行哈希运算,得到所述第一随机数对应的随机数分段。
[0143]
本发明实施例提供的随机数生成装置中,各个功能模块运行过程中所采用的方法详解可以参见图1至图3方法实施例的对应方法详解,在此不再赘述。
[0144]
进一步的,依据上述实施例,本发明的另一个实施例还提供了一种计算机可读存储介质,所述存储介质包括存储的程序,其中,在所述程序运行时控制所述存储介质所在设备执行上述中任意一项所述的随机数生成方法。
[0145]
进一步的,依据上述实施例,本发明的另一个实施例还提供了一种存储管理设备,所述存储管理设备包括:
[0146]
存储器,用于存储程序;
[0147]
处理器,耦合至所述存储器,用于运行所述程序以执行上述中任意一项所述的随机数生成方法。
[0148]
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
[0149]
可以理解的是,上述方法及装置中的相关特征可以相互参考。另外,上述实施例中的“第一”、“第二”等是用于区分各实施例,而并不代表各实施例的优劣。
[0150]
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
[0151]
在此提供的算法和显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与基于在此的示教一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
[0152]
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
[0153]
类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
[0154]
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或
子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
[0155]
此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
[0156]
本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(dsp)来实现根据本发明实施例的深度神经网络模型的运行方法、装置及框架中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。
[0157]
应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1