发明内容
有鉴于此,本发明提供了一种随机数的生成方法、装置及系统,主要目的在于随着单位时间段内需求随机数个数多少变化,切换不同随机数生成器参与生成随机数操作,能够灵活地满足不同生成随机数数量的需求,以及根据不同需求,得到随机数可以既有真随机数又有伪随机数,从而加强了生成随机数的随机性和不可预测性。
为了达到上述目的,本发明主要提供如下技术方案:
本申请第一方面提供了一种随机数的生成方法,该方法包括:
获取第一单位时间段内生成的随机数个数;
通过将所述第一单位时间段内生成的随机数个数与第一阈值以及第二阈值进行比较,判断选择第二单位时间段内对应的随机数生成模式,所述第二单位时间段是与所述第一单位时间段相邻的后一个单位时间段,所述随机数生成模式包括:调用真随机数生成器生成随机数的第一生成模式、调用真随机数生成器和伪随机数生成器生成随机数的第二生成模式以及调用伪随机数生成器生成随机数的第三生成模式。
根据所选择的所述第二单位时间段内对应的随机数生成模式,生成随机数。
在本申请第一方面的一些变更实施方式中,所述通过将所述第一单位时间段内生成的随机数个数与第一阈值以及第二阈值进行比较,判断选择第二单位时间段内对应的随机数生成模式,包括:
若累计所述第一单位时间段内生成的随机数个数小于或等于所述第一阈值,则确定在所述第二单位时间段内选择所述第一生成模式;
若累计所述第一单位时间段内生成的随机数个数大于所述第一阈值且小于所述第二阈值,则确定在所述第二单位时间段内选择所述第二生成模式;
若累计所述第一单位时间段内生成的随机数个数大于或等于所述第二阈值,则确定在所述第二单位时间段内选择所述第三生成模式。
在本申请第一方面的一些变更实施方式中,若确定在所述第二单位时间段内选择了所述第二生成模式,则所述根据所选择的所述第二单位时间段内对应的随机数生成模式,生成随机数,包括:
在所述第二单位时间段内接收随机数生成请求信息;
响应于所述随机数生成请求信息,按照随机数种子在第一种子存储池中的排列顺序,从所述排列顺序中逐个获取目标种子,所述第一种子存储池存储了以0和1组成的随机数种子序列;
通过识别所述目标种子在所述随机数种子序列中对应的比特位,切换调用真随机数生成器或伪随机数生成器执行生成随机数操作,得到生成的随机数。
在本申请第一方面的一些变更实施方式中,所述通过识别所述目标种子在所述随机数种子序列中对应的比特位,切换调用真随机数生成器或伪随机数生成器执行生成随机数操作,得到生成的随机数,包括:
若识别所述目标种子在所述随机数种子序列中对应的比特位为0,则选择真随机数生成器执行生成随机数操作,得到生成的随机数;若识别所述目标种子在所述随机数种子序列中对应的比特位为1,则选择伪随机数生成器执行生成随机数操作,得到生成的随机数;或者,
若识别所述目标种子在所述随机数种子序列中对应的比特位为1,则选择真随机数生成器执行生成随机数操作,得到生成的随机数;若识别所述目标种子在所述随机数种子序列中对应的比特位为0,则选择伪随机数生成器执行生成随机数操作,得到生成的随机数
在本申请第一方面的一些变更实施方式中,所述方法还包括:
利用物理传感器收集物理噪声;
利用种子生成器处理所述物理噪声,生成随机数种子;
将多个所述随机数种子划分成三组;
将第一组随机数种子存储到所述第一种子存储池中,所述第一种子存储池用于支持所述第二生成模式生成随机数;
将第二组随机数种子存储到第二种子存储池中,所述第二种子存储池内的随机数种子不可复用,用于支持所述第一生成模式生成随机数;
将第三组随机数种子存储到第三种子存储池中,所述第三种子存储池内的随机数种子可复用,用于支持所述第三生成模式生成随机数。
本申请第二方面提供了一种随机数的生成装置,该装置包括:
获取单元,用于获取第一单位时间段内生成的随机数个数;
判断单元,用于通过将所述获取单元获取到的第一单位时间段内生成的随机数个数与第一阈值以及第二阈值进行比较,判断选择第二单位时间段内对应的随机数生成模式,所述第二单位时间段是与所述第一单位时间段相邻的后一个单位时间段,所述随机数生成模式包括:调用真随机数生成器生成随机数的第一生成模式、调用真随机数生成器和伪随机数生成器生成随机数的第二生成模式以及调用伪随机数生成器生成随机数的第三生成模式。
生成单元,用于根据所述判断单元所选择的所述第二单位时间段内对应的随机数生成模式,生成随机数。
在本申请第二方面的一些变更实施方式中,所述判断单元包括:
累计模块,用于累计所述第一单位时间段内生成的随机数个数小于或等于所述第一阈值、或累计所述第一单位时间段内生成的随机数个数大于所述第一阈值且小于所述第二阈值、或累计所述第一单位时间段内生成的随机数个数大于或等于所述第二阈值;
确定模块,用于当累计所述第一单位时间段内生成的随机数个数小于或等于所述第一阈值时,则确定在所述第二单位时间段内选择所述第一生成模式;或,
当累计所述第一单位时间段内生成的随机数个数大于所述第一阈值且小于所述第二阈值时,确定在所述第二单位时间段内选择所述第二生成模式;或,
当累计所述第一单位时间段内生成的随机数个数大于或等于所述第二阈值时,确定在所述第二单位时间段内选择所述第三生成模式。
本申请第三方面提供了一种随机数的生成系统,应用于如上所述的随机数的生成方法,所述系统包括:
物理传感器,用于采集物理噪声;
种子生成器,连接所述物理传感器,用于根据所述物理噪声生成随机数种子;
种子存储池,连接所述种子生成器,用于存储所述随机数种子;
真随机数生成器,连接所述种子存储池,用于根据所述随机数种子生成真随机数;
伪随机数生成器,连接所述种子存储池,用于根据所述随机数种子生成伪随机数;
计数器,连接所述真随机数生成器和所述伪随机数生成器,用于累计单位时间段内生成随机数个数;
控制电路,连接所述计数器、所述真随机数生成器和所述伪随机数生成器,用于通过将所述第一单位时间段内生成的随机数个数与第一阈值以及第二阈值进行比较,判断选择第二单位时间段内对应的随机数生成模式,所述第二单位时间段是与所述第一单位时间段相邻的后一个单位时间段,所述随机数生成模式包括:调用真随机数生成器生成随机数的第一生成模式、调用真随机数生成器和伪随机数生成器生成随机数的第二生成模式以及调用伪随机数生成器生成随机数的第三生成模式。
本申请第四方面提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上所述的随机数的生成方法。
本申请第五方面提供了一种电子设备,包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如上所述的随机数的生成方法。
借由上述技术方案,本发明提供的技术方案至少具有下列优点:
本发明提供了一种随机数的生成方法、装置及系统,本发明是首先获取一个单位时间段内生成随机数个数,然后利用该单位时间段内生成随机数个数与两个阈值进行比较,从而判断相邻的后一个单位时间段内所需选择的随机数生成模式,具体是在从第一生成模式(即只使用真随机数生成器生成随机数的生成模式)、第二生成模式(即混合使用真随机数生成器和伪随机数生成器生成随机数的生成模式)、第三生成模式(即只使用伪随机数生成器生成随机数的生成模式)中选择一种生成模式,去执行生成随机数操作。本发明是根据前一个时间段内生成随机数个数去选择相邻后一个单位时间段内的随机数生成模式以执行相应生成随机数操作,继而相当于是根据前一个时间段内生成随机数个数预判了当下随机数生成需求,从而根据不同需求切换选择不同随机数生成器参与生成随机数操作,得到随机数可以既有真随机数又有伪随机数,从而加强了生成随机数的随机性和不可预测性。相较于现有技术,解决了现有方法只是对伪随机数生成器应用的优化而得到的仍是伪随机数,导致了难以满足日益对随机数的随机性和不可预测性的高质量需求的技术问题。本发明能够灵活地满足不同生成随机数数量的需求,同时也提高了生成随机数的质量。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
具体实施方式
下面将参照附图更详细地描述本发明的示例性实施例。虽然附图中显示了本发明的示例性实施例,然而应当理解,可以以各种形式实现本发明而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本发明,并且能够将本发明的范围完整的传达给本领域的技术人员。
本发明实施例提供了一种随机数的生成方法,该方法的执行主体为设备上的随机数生成功能模块,这个随机数生成功能模块主要的作用就是生成随机数,以支持其他功能模块获取随机数以及利用随机数实现相关加密应用服务的需求。本发明实施例提供的方法主要是根据前一个单位时间段内累计生成随机数个数,进一步确定切换选择在相邻的后一个单位时间段内由什么样的随机数生成器而执行生成随机数操作,如图1所示,对此本发明实施例提供以下具体步骤:
101、获取第一单位时间段内生成的随机数个数。
其中,需要说明的是,本发明实施例所指的“第一单位时间段”可以是一个随机数生成功能模块初始工作的第一个单位时间段,也可以是在随机数功能模块工作的过程中任选的一个单位时间段,本发明实施例强调“第一单位时间段”目的是相较于后续提及的“第二单位时间段”而言的,并且以“第一”和“第二”目的是区别指代具有时间先后顺序的相邻个两个单位时间段。
其中,随机数生成功能模块安置在硬件设备的电路板里,在电路板上电后,随机数生成功能模块启动开始工作。随机数生成功能模块会不断地接收到其他功能模块发送的随机数生成请求信息,具体的,随机数生成功能模块接收到随机数生成请求信息对应的时间间隔,还是依赖于其他功能模块具体实际业务需求而定。
在本发明实施例中,如果“第一单位时间段”是随机数生成功能模块初始工作对应的第一个单位时间段,那么当接收到随机数生成请求信息时就可以立即执行生成随机数操作,具体的,可以只选择真随机数生成器或只选择伪随机数生成器参与生成随机数操作,又或者可以选择这两个随机数生成器参与执行操作。但优选的,由于是初始单位时间段,如果接收到生成随机数请求信息比较少,又或者出于生成更高随机数质量的考虑,优先的,只选择真随机数生成器执行生成随机数操作。
示例性的,这个初始单位时间段可以为随机数生成功能模块刚启动的第一个单位时间段,此时随机数生成功能模块刚启动工作时还未生成随机数,初始工作状态中接收到的随机数生成请求信息也会相对较少些,那么对生成随机数的速度要求也不会过高,此时可以只选择真随机数生成器执行操作满足需求,即:应该更侧重考虑生成随机数的质量,而不是速度,所以调用真随机数生成器生成真随机数。
在本发明实施例中,如果“第一单位时间段”不是随机数生成功能模块初始工作对应的第一个单位时间段,那么该“第一单位时间段”也会存在相邻的前一个单位时间段,那么具体则根据下述步骤102的解释说明,本“第一单位时间段”相当于是某个单位时间段对应的相邻的后有一个单位时间段,因此本“第一单位时间段”也会遵循步骤102的具体实施方法执行生成随机数操作,具体陈述参见如下步骤102。
102、通过将第一单位时间段内生成的随机数个数与第一阈值以及第二阈值进行比较,判断选择第二单位时间段内对应的随机数生成模式。
其中,第二单位时间段是与第一单位时间段相邻的后一个单位时间段,随机数生成模式包括:调用真随机数生成器生成随机数的第一生成模式、调用真随机数生成器和伪随机数生成器生成随机数的第二生成模式以及调用伪随机数生成器生成随机数的第三生成模式。
在本发明实施例中,对于不同实际业务需求,单位时间段内随机数生成功能模块可能会不断接收到大量随机数生成请求信息,对于这些大量随机数生成请求信息如果先统计需求数量,再生成随机数操作,难免会耗费大量处理成本,以及进一步的即使接收到了随机数生成请求信息但也会发生未成功生成随机数的异常情况,等等诸多因素。因此为了节约随机数生成功能模块的处理成本,提高处理效率,本发明实施例不去根据随机数生成请求信息去统计随机数需求的个数而立即生成随机数,而选择了一种代替的操作方法为:以前一个单位时间段内生成的随机数个数去预判相邻的后一个单位时间段内对于随机数的需求量。
这主要是因为在随机数生成器不断接收到随机数生成请求信息的过程中,假设接收到请求信息就立即去生成随机数,那么经分析一段时间范围的随机数个数生成情况可知:随着单位时间被划分的越细微(如单位时间为1毫秒),那么相邻单位时间段内生成随机数个数之间数量差越小,因此就可以利用前一个单位时间段已生成的随机数个数预判相邻的后一个单位时间段内需求随机数个数是“需求较少”、“需求一般”或“需求较大”了。
以及进一步的,本发明实施例给出选择哪种随机数生成模式的具体实施方法为:将前一个单位时间段内已经生成的随机数个数与两个阈值进行比较,根据比较结果去判断前一个单位时间段内生成随机数个数是多或少,继而预判相邻后一个单位时间段内随机数需求量是多或少,来选择不同随机数生成模式。
对于上述提及的三种随机数生成模式,只使用真随机数生成器执行操作,得到随机数质量高但效率低;只使用伪随机数生成器执行操作,得到随机数数量多,即效率高但质量不如真随机数。因此第一生成模式适合“随机数需求量少”的生成随机数操作;第二生成模式适合“随机数需求量一般或适中”的生成随机数操作;第三生成模式适合“随机数需求量较大”的生成随机数操作。
103、根据所选择的第二单位时间段内对应的随机数生成模式,生成随机数。
在本发明实施例中,根据步骤102判断选择出第二单位时间段内所需随机数生成模式,执行生成随机数操作。
以上,本发明实施例提供了一种随机数的生成方法,本发明实施例是首先获取一个单位时间段内生成随机数个数,然后利用该单位时间段内生成随机数个数与两个阈值进行比较,从而判断相邻的后一个单位时间段内所需选择的随机数生成模式,具体是在从第一生成模式(即只使用真随机数生成器生成随机数的生成模式)、第二生成模式(即混合使用真随机数生成器和伪随机数生成器生成随机数的生成模式)、第三生成模式(即只使用伪随机数生成器生成随机数的生成模式)中选择一种生成模式,去执行生成随机数操作。本发明实施例是根据前一个时间段内生成随机数个数去选择相邻后一个单位时间段内的随机数生成模式以执行相应生成随机数操作,继而相当于是根据前一个时间段内生成随机数个数预判了当下随机数生成需求,从而根据不同需求切换选择不同随机数生成器参与生成随机数操作,得到随机数可以既有真随机数又有伪随机数,从而加强了生成随机数的随机性和不可预测性。相较于现有技术,解决了现有方法只是对伪随机数生成器应用的优化而得到的仍是伪随机数,导致了难以满足日益对随机数的随机性和不可预测性的高质量需求的技术问题。本发明实施例能够灵活地满足不同生成随机数数量的需求,同时也提高了生成随机数的质量。
为了对上述实施例做出更加详细的说明,本发明实施例还提供了另一种随机数的生成方法,如图2所示,该方法是对上述实施例的细化陈述或补充陈述,对此本发明实施例提供以下具体步骤:
201、获取第一单位时间段内生成的随机数个数。
在本发明实施例中,对本步骤的陈述,参见步骤101,此处不再赘述。
202a、若累计第一单位时间段内生成的随机数个数小于或等于第一阈值,则确定在第二单位时间段内选择第一生成模式,该第一生成模式为调用真随机数生成器生成随机数。
其中,第一阈值和第二阈值是需要根据具体硬件架构及芯片计算能力进行适当设置的,主要依据为系统满载荷生成真随机数的能力,不同硬件架构可以对这两个值灵活设置。比如,对于一个芯片,满载荷生成真随机数的能力为单位时间段内生成M个,那么可以将M的80%,设置为第二阈值,将M的40%设置为第一阈值。
在本发明实施例中,利用第一单位时间段内生成的真随机数个数与第一阈值和第二阈值比较,继而衡量这个真随机数个数是符合“生成较少”或“生成一般”或“生成较多”中哪个标准,由于本发明实施例是利用前一个单位时间段内生成随机数个数预判后一个单位时间段内随机数的需求量,因此利用上述与与第一阈值和第二阈值比较操作,也就间接地相当于衡量预判了后一个单位时间段随机数的需求量符合“需求较少”或“需求一般”或“需求较多”中哪个标准。
示例性的,若第一单位时间段内生成的真随机数个数小于或等于第一阈值,则判定这个真随机数个数是符合“生成较少”,相应的,衡量预判了后一个单位时间段随机数的需求量符合“需求较少”的标准。
若第一单位时间段内生成的真随机数个数大于或等于第二阈值,则判定这个真随机数个数是符合“生成较多”,相应的,衡量预判了后一个单位时间段随机数的需求量符合“需求较多”的标准。
若第一单位时间段内生成的真随机数个数大于第一阈值且小于第二阈值,则判定这个真随机数个数是符合“生成一般”,相应的,衡量预判了后一个单位时间段随机数的需求量符合“需求一般”的标准。
在本发明实施例中,若累计第一单位时间段内对应生成的真随机数个数小于或等于第一阈值,相应地会衡量预判第二单位时间段内随机数需求量为“需求较少”,所以此时可以选择只调用真随机数生成器在第二单位时间段内执行生成真随机数操作,即优先考虑生成质量更好的随机数,同时由于需求量较少,所以即使利用真随机数生成器执行操作不如伪随机数生成器效率高,但最终也不会在满足随机数需求量上造成什么不利影响。
202b、若累计第一单位时间段内生成的随机数个数大于第一阈值且小于第二阈值,则确定在第二单位时间段内选择第二生成模式,该第二生成模式为调用真随机数生成器和伪随机数生成器生成随机数。
在本发明实施例中,若累计第一单位时间段内对应生成的真随机数个数大于第一阈值且小于第二阈值时,相应地衡量预判第二单位时间段内随机数需求量为“需求一般”,所以此时不必优先考虑随机数质量或速度,可以调用真随机数生成器和伪随机数生成器在第二单位时间段内执行生成随机数操作。
示例性的,假设衡量预判第二单位时间段内随机数需求量为2000个,则可以考虑其中的50%利用真随机数生成器操作,而其他50%利用伪随机数生成器操作,据此实现了真随机数生成器和伪随机数生成器的组合协同操作,但具体的如何具体地实现这种组合协同操作,以上50%对50%仅是一种例举,本发明实施例不做限定。
202c、若累计第一单位时间段内生成的随机数个数大于或等于第二阈值,则确定在第二单位时间段内选择第三生成模式,该第三生成模式为调用伪随机数生成器生成随机数。
在本发明实施例中,若累计第一单位时间段内对应生成的真随机数个数大于或等于第二阈值时,相应地会衡量预判第二单位时间段内随机数需求量为“需求较多”,所以此时应该优先考虑随机数生成效率,从而可以选择只调用伪随机数生成器在第二单位时间段内执行生成伪随机数操作。
203、根据所选择的第二单位时间段内对应的随机数生成模式,生成随机数。
需要说明的是,生成随机数是需要使用随机数种子的,那么首先具体解释下生成并存储随机数种子的具体实施方法,可以包括如下:
首先,利用物理传感器收集物理噪声,比如:环境中的声噪声,光噪声,电路元件里的点噪声。收集到的噪声,此时为模拟信号。
其次,利用种子生成器处理物理噪声,生成随机数种子。具体包括:对收集到物理噪声对应的模拟信号,进入放大信号处理,再经过模数转换操作转换为数字电信号,再经过一些复杂过程(如:锁相环来保持信号,经过比较器判定信号为0还是1,校验器对随机数进行校验),最终生成了以0和1序列组成的随机数种子。
最后,将生成的大量随机数种子划分成三组,相应构建三个不同种子存储池,以分别用于支持三种随机数生成模式。
示例性的,划分成组的方式为不平均分,分别为包含种子较少、一般和比较多的三组。应对于上述提及的不同三种随机数生成模式,本发明将不同数量组的种子存储到不同存储池内,以用于支持不同随机数生成模式所提供的随机数生成服务,具体解释说明如下:
示例性的,种子存储池,也就是种子存储器,可以为flash存储器或先进先出(First Input First Output,FIFO)存储器,利用这两种存储器,掉电后不擦除,这样掉电之前种子存储池内随机数种子,在下次上电后仍可以使用。
由于第一生成模式是适应于随机数需求量较少的情况,目的是优先要求生成随机数质量而非速度,且生成的是真随机数。那么可以选择将包含随机数种子较少的一组种子存储到FIFO存储器内,构建一个种子存储池,并且设置该组内随机数种子不可复用,即这个种子存储池内随机数种子只能被使用一次,若所有种子都被使用过,则需要等待种子生成器生成新的种子并补充进来。如此操作目的是,加强了生成真随机数的随机性和不可预测性。
由于第二生成模式是适应于随机数需求量一般的情况,目的是尽量平衡生成随机数质量和速度两个因素,且生成的随机数中包含了真随机数和伪随机数。那么可以将三组种子数量中排位在中间的一组种子存储到FIFO存储器,构建一个种子存储池。并且设置该组内随机数种子不可复用,该组内种子主要用于生成真随机数和伪随机数。
由于第三生成模式是适应于当随机数需求量较多的情况,目的是优先考虑生成随机数的速度而非质量,且生成的是伪随机数。那么可以选择将包含随机数种子较多的一组种子存储到flash存储器,构建一个种子存储池,并且设置该组内随机数种子可以复用,即当种子使用速度太快而来不及补充时,可以继续使用已用过的种子生成伪随机数。此处操作目的是,提高了生成伪随机数的效率。
下面,在本发明实施例中,对于确定了第二单位时间段对应的随机数生成模式之后,那么应对不同随机数生成模式使用不同种子存储池内种子生成随机数的具体实施方法,进行详细的解释说明如下:
首先是,若确定在第二单位时间段内选择了第一生成模式,那么在第二单位时间段内接收到生成随机数请求信息时,调用随机数生成器从支持第一生成模式的种子存储池中获取随机数种子,以完成生成真随机数操作,该种子存储池内存储随机种子不可被复用,如若被使用完,则需要等待种子生成器生成新的种子并补充进来,再进行下一步执行生成真随机数操作。
其次是,若确定在第二单位时间段内选择了第二生成模式,那么在第二单位时间段内接收到生成随机数请求信息时,调用真随机数生成器和伪机数生成器从支持第二生成模式的种子存储池中获取随机数种子,以完成生成伪随机数操作,具体操作过程步骤,可以包括如下:
第一步骤,在第二单位时间段内接收随机数生成请求信息,响应于随机数生成请求信息,按照种子存储池内随机数种子排列顺序,逐个获取目标种子。
需要说明的是,在支持第二生成模式的种子存储池中是存储了以0和1组成的随机数种子序列,那么当需要从种子存储池中获取一个目标种子时,也是按照这个随机数种子序列的首位至末位的排序而遍历获取的。
第二步骤,通过识别目标种子在随机数种子序列中对应的比特位,切换调用真随机数生成器或伪随机数生成器执行生成随机数操作。
示例性的,若识别目标种子在随机数种子序列中对应的比特位为0,则选择真随机数生成器执行生成随机数操作;若识别目标种子在随机数种子序列中对应的比特位为1,则选择伪随机数生成器执行生成随机数操作。
示例性的,或者也可以是比特位0对应伪随机数生成器操作,比特位1对应对应真随机数生成器操作。
在本发明实施例中,通过识别比特位方式切换是调用真随机数生成器或伪随机数生成器执行生成随机数操作,得到随机数包含真随机数和伪随机数,从而间接加强了第二种随机数生成模式生成随机数的随机性和不可预测性。
最后是,若确定在第二单位时间段内选择了第三生成模式,那么在第二单位时间段内接收到生成随机数请求信息时,调用伪机数生成器从支持第三生成模式的种子存储池中获取随机数种子,以完成生成伪随机数操作。该种子存储池内存储随机种子是可被复用的,但是种子存储池内种子是按照排列顺序被逐个使用的,从而若种子都被使用过,则按照这个排列顺序再被二次使用,以避免出现某些种子被使用次数太多而其他种子被使用次数太少的情况。
以上,需要说明的是,对于将第一单位时间段内生成随机数个数分别与第一阈值、第二阈值进行比较得到比较结果,可以添加flag标识。
示例性的,假设第一单位时间段内生成真随机数个数为N,若N≤第一阈值,则标记flag=-1;若N≥第二阈值,则标记flag=1;若第一阈值<N<第二阈值,则标记flag=0。那么将flag标识与相应随机数生成模式执行绑定,从而在方便于随机数生成功能模块高效的识别到比较结果的同时,也方便于高效地确定根据该比较结果应该应用哪种随机数生成模式。
进一步的,本发明实施例还提供了一个随机数生成系统,应用于如上实施例提供的随机数的生成方法,如图3所示,该系统包括:物理传感器、种子生成器、种子存储池、真随机数生成器、伪随机数生成器、计数器和控制电路。
物理传感器,用于采集物理噪声;
种子生成器,连接物理传感器,用于根据物理噪声生成随机数种子;
种子存储池,连接种子生成器,用于存储随机数种子;
真随机数生成器,连接种子存储池,用于根据随机数种子生成真随机数;
伪随机数生成器,连接种子存储池,用于根据随机数种子生成伪随机数;
计数器,连接真随机数生成器和伪随机数生成器,用于累计单位时间段内生成随机数个数;
控制电路,连接计数器、真随机数生成器和伪随机数生成器,用于通过将第一单位时间段内生成的随机数个数与第一阈值以及第二阈值进行比较,判断选择第二单位时间段内对应的随机数生成模式,第二单位时间段是与第一单位时间段相邻的后一个单位时间段,随机数生成模式包括:调用真随机数生成器生成随机数的第一生成模式、调用真随机数生成器和伪随机数生成器生成随机数的第二生成模式以及调用伪随机数生成器生成随机数的第三生成模式。
进一步的,结合图3所示的系统,本发明实施例例举了生成随机数的简易流程示意图,如图4。那么基于随机数生成系统(如图3)中控制电路判断的在第二单位时间段内所选择的随机数生成模式,图4中示出了:TRNG指代真随机数生成器,用于在第一生成模式下执行生成随机数操作;PRNG指代伪随机数生成器,用于在第三生成模式下执行生成随机数操作;RNG选择器,用于在第二生成模式下执行随机数生成操作,具体的,在第二生成模式下还是根据从种子存储池中所选择的目标种子在随机数种子序列中对应的比特位为0或1,由RNG选择器执行切换选择是由真随机数生成器执行操作或是由伪随机数生成器执行相应操作。图4中,随机数序列是指前一个单位时间段内流入的随机数组成的序列,根据随机数序列,计数器可以计数对应的随机数个数。
在图4中计数器进行累计前一个单位时间段对应随机数个数,并将累计随机数个数与第一阈值和第二阈值进行比较,根据比较结果就能够预判选取的随机数生成模式(即在第一生成模式、第二生成模式和第三生成模式中三种择一选择)。需要说明的是,得到比较结果后需要对计数器清零,用于方便对相邻的后一个单位时间段内生成随机数个数的累计操作。
如图4所示,根据不同比较结果会确定相邻的后一个单位时间段内选择是由真随机数生成器、伪随机数生成器执行生成随机数操作,又或者是,由RNG选择器执行切换选择是由真随机数生成器生成真随机数或是由伪随机数生成器生成伪随机数。
进一步的,作为对上述图1、图2所示方法的实现,本发明实施例提供了一种随机数的生成装置。该装置实施例与前述方法实施例对应,为便于阅读,本装置实施例不再对前述方法实施例中的细节内容进行逐一赘述,但应当明确,本实施例中的装置能够对应实现前述方法实施例中的全部内容。该装置应用于灵活地满足不同随机数生成需求生成更加高质量的随机数,具体如图5所示,该装置包括:
获取单元31,用于获取第一单位时间段内生成的随机数个数;
判断单元32,用于通过将所述获取单元获取到的第一单位时间段内生成的随机数个数与第一阈值以及第二阈值进行比较,判断选择第二单位时间段内对应的随机数生成模式,所述第二单位时间段是与所述第一单位时间段相邻的后一个单位时间段,所述随机数生成模式包括:调用真随机数生成器生成随机数的第一生成模式、调用真随机数生成器和伪随机数生成器生成随机数的第二生成模式以及调用伪随机数生成器生成随机数的第三生成模式。
生成单元33,用于根据所述判断单元所选择的所述第二单位时间段内对应的随机数生成模式,生成随机数。
进一步的,如图6所示,所述判断单元32包括:
累计模块321,用于累计所述第一单位时间段内生成的随机数个数小于或等于所述第一阈值、或累计所述第一单位时间段内生成的随机数个数大于所述第一阈值且小于所述第二阈值、或累计所述第一单位时间段内生成的随机数个数大于或等于所述第二阈值;
确定模块322,用于当累计所述第一单位时间段内生成的随机数个数小于或等于所述第一阈值时,则确定在所述第二单位时间段内选择所述第一生成模式;或,
当累计所述第一单位时间段内生成的随机数个数大于所述第一阈值且小于所述第二阈值时,确定在所述第二单位时间段内选择所述第二生成模式;或,
当累计所述第一单位时间段内生成的随机数个数大于或等于所述第二阈值时,确定在所述第二单位时间段内选择所述第三生成模式。
进一步的,如图6所示,若确定在所述第二单位时间段内选择了所述第二生成模式,所述生成单元33包括:
接收模块331,用于在所述第二单位时间段内接收随机数生成请求信息;
获取模块332,用于响应于所述接收模块331接收到的随机数生成请求信息,按照随机数种子在第一种子存储池中的排列顺序,从所述排列顺序中逐个获取目标种子,所述第一种子存储池存储了以0和1组成的随机数种子序列;
切换模块333,用于通过识别所述获取模块332获取到的目标种子在所述随机数种子序列中对应的比特位,切换调用真随机数生成器或伪随机数生成器执行生成随机数操作,得到生成的随机数。
进一步的,如图6所示,所述切换模块333包括:
识别子模块3331,用于识别所述目标种子在所述随机数种子序列中对应的比特位为0,或识别所述目标种子在所述随机数种子序列中对应的比特位为1;
选择子模块3332,用于当识别所述目标种子在所述随机数种子序列中对应的比特位为0时,选择真随机数生成器执行生成随机数操作,得到生成的随机数;用于当识别所述目标种子在所述随机数种子序列中对应的比特位为1时,选择伪随机数生成器执行生成随机数操作,得到生成的随机数;
选择子模块3332除了执行以上功能操作之外,又或者,还可以执行如下功能操作:
选择子模块3332,用于当识别所述目标种子在所述随机数种子序列中对应的比特位为1时,选择真随机数生成器执行生成随机数操作,得到生成的随机数;用于当识别所述目标种子在所述随机数种子序列中对应的比特位为0时,选择伪随机数生成器执行生成随机数操作,得到生成的随机数。
进一步的,如图6所示,所述装置还包括:
收集单元34,用于利用物理传感器收集物理噪声;
所述生成单元33,还用于利用种子生成器处理所述收集单元34收集的物理噪声,生成随机数种子;
划分单元35,用于将多个所述生成单元得到的随机数种子划分成三组;
存储单元36,用于将第一组随机数种子存储到所述第一种子存储池中,所述第一种子存储池用于支持所述第二生成模式生成随机数;
所述存储单元36,还用于将第二组随机数种子存储到第二种子存储池中,所述第二种子存储池内的随机数种子不可复用,用于支持所述第一生成模式生成随机数;
所述存储单元36,还用于将第三组随机数种子存储到第三种子存储池中,所述第三种子存储池内的随机数种子可复用,用于支持所述第三生成模式生成随机数。
综上所述,本发明实施例提供了一种随机数的生成方法、装置及系统,本发明实施例是首先获取一个单位时间段内生成随机数个数,然后利用该单位时间段内生成随机数个数与两个阈值进行比较,从而判断相邻的后一个单位时间段内所需选择的随机数生成模式,具体是在从第一生成模式(即只使用真随机数生成器生成随机数的生成模式)、第二生成模式(即混合使用真随机数生成器和伪随机数生成器生成随机数的生成模式)、第三生成模式(即只使用伪随机数生成器生成随机数的生成模式)中选择一种生成模式,去执行生成随机数操作。本发明是根据前一个时间段内生成随机数个数去选择相邻后一个单位时间段内的随机数生成模式以执行相应生成随机数操作,继而相当于是根据前一个时间段内生成随机数个数预判了当下随机数生成需求,从而根据不同需求切换选择不同随机数生成器参与生成随机数操作,得到随机数可以既有真随机数又有伪随机数,从而加强了生成随机数的随机性和不可预测性。相较于现有技术,解决了现有方法只是对伪随机数生成器应用的优化而得到的仍是伪随机数,导致了难以满足日益对随机数的随机性和不可预测性的高质量需求的技术问题。本发明实施例能够灵活地满足不同生成随机数数量的需求,同时也提高了生成随机数的质量。
所述随机数的生成装置包括处理器和存储器,上述获取单元、判断单元和生成单元等均作为程序单元存储在存储器中,由处理器执行存储在存储器中的上述程序单元来实现相应的功能。
处理器中包含内核,由内核去存储器中调取相应的程序单元。内核可以设置一个或以上,通过调整内核参数来随着单位时间段内需求随机数个数多少变化,切换不同随机数生成器参与生成随机数操作,能够灵活地满足不同生成随机数数量的需求,以及根据不同需求,得到随机数可以既有真随机数又有伪随机数,从而加强了生成随机数的随机性和不可预测性。
本发明实施例提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上所述的随机数的生成方法。
本发明实施例提供了一种电子设备,包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如上所述的随机数的生成方法。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
在一个典型的配置中,设备包括一个或多个处理器(CPU)、存储器和总线。设备还可以包括输入/输出接口、网络接口等。
存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM),存储器包括至少一个存储芯片。存储器是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括要素的过程、方法、商品或者设备中还存在另外的相同要素。
本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
以上仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。