随机数的生成方法和装置与流程

文档序号:15143657发布日期:2018-08-10 20:11阅读:270来源:国知局

本申请涉及计算机技术领域,尤其涉及一种随机数的生成方法和装置。



背景技术:

传统的网络环境中,随机数都由各自的硬件环境生成,但是在区块链环境中,各个节点、账户之间缺少信任机制,因此均不可能信任任意一个节点、账户提供的随机数的随机性。

随机数本身是一种数据资源,在很多领域都有应用,例如,对于多个主体之间的抽签或者随机分配等机制中的应用。例如,机动车购买的摇号,比赛的分组的抽签、彩票等领域,这些都会使用到随机数。

随机数最重要的特性在于要保证其产生的随机性,不能受到任何人的操控。如果某个节点提供的并不是随机数,而是在获得了一定信息的条件下,生成的有目的性的随机数,那么这个随机数就有可能影响到最终所应用事项的结果。

比如,节点可以通过有限次的实验来生成对其有利结果的随机数,这样也是不公平的。



技术实现要素:

本发明提供了一种随机数的生成方法和装置,能够保证得到的随机数的随机性。

为达到上述目的,本发明的实施例采用如下技术方案:

第一方面,提供了一种随机数的生成方法,包括:

从多个数据源获取多个源随机数,所述多个源随机数中至少存在一个源随机数为随机产生;

对所述多个源随机数经不可逆算法进行计算,生成一个随机数。

第二方面,提供了一种随机数的生成装置,包括:

源随机数获取模块,用于从多个数据源获取多个源随机数,所述多个源随机数中至少存在一个源随机数为随机产生;

随机数计算模块,用于对所述多个源随机数经不可逆算法进行计算,生成一个随机数。

本发明提供的随机数的生成方法和装置,通过从多个数据源获取多个源随机数,并对这些源随机数经不可逆算法进行计算,生成随机数,从而提高生成随机数产生结果的随机性。

上述说明仅是本申请技术方案的概述,为了能够更清楚了解本申请的技术手段,而可依照说明书的内容予以实施,并且为了让本申请的上述和其它目的、特征和优点能够更明显易懂,以下特举本申请的具体实施方式。

附图说明

通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本申请的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:

图1为本发明实施例的随机数的生成逻辑示意图;

图2为本发明实施例示出的随机数的生成方法流程图一;

图3为本发明实施例示出的随机数的生成方法流程图二;

图4为本发明实施例示出的随机数的生成方法流程图三;

图5为本发明实施例示出的随机数的生成装置的结构示意图一;

图6为本发明实施例示出的随机数的生成装置的结构示意图二;

图7为本发明实施例示出的随机数的生成装置的结构示意图三。

具体实施方式

下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。

本方案改善了现有技术中,随机数的生成为由数据提供方各自的硬件环境生成,但是在区块链环境中,各个节点、账户之间由于缺少信任机制,因此均不可能信任任意一个节点、账户提供的随机数的随机性的缺陷。其核心思想是基于各个数据提供方提交的源随机数,对这些源随机数经不可逆算法进行计算从而生成最终的随机数。

如图1所示,为本发明实施例的随机数的生成逻辑示意图。该生成逻辑为从不同的多个数据源获取多个源随机数,每个源随机数本身也可以是随机产生的。然后基于这些随机数经不可逆算法最终得到一个随机数。理论上,只要一个源随机数为随机产生,那么就可以保证最终得到随机数的随机性。

下面通过多个实施例来进一步说明本申请的技术方案。

实施例一

基于上述生成随机数的方案思想,如图2所示,其为本发明实施例示出的随机数的生成方法流程图一,该方法的执行主为设置在网络中的服务器。如图2所示,该随机数的生成方法包括如下步骤:

s210,从多个数据源获取多个源随机数,该多个源随机数中至少存在一个源随机数为随机产生。

其中,上述多个数据源可以为设置在网络中的多个计算节点,或者账户节点,也可称之为“数据提供方”。每个数据提供方可以按预制需求随机产生数值,每个数值称为该数据提供方提供的一个源随机数。

当需要生成随机数时,可以从上述的网络中各数据提供方处获取用于生成随机数的多个源随机数,这些源随机数中至少存在一个源随机数为数据提供方随机产生。

s220,对多个源随机数经不可逆算法进行计算,生成一个随机数。

在获取到指定数目的源随机数后,可对这些源随机数整体经不可逆算法进行计算,最终生成一个随机数。

其中,在获取指定数目的源随机数的过程中,服务器可以按接收到的源随机数的时间顺序挑选指定数目的源随机数,也可以在众多源随机数中随机选择指定数目的源随机数,以提高最终生成的随机数的随机性。

本实施例采用不可逆算法对多个源随机数进行计算生成随机数,其目的是防止个别数据提供方为了获得想要的随机数,而提供对自己有利的源随机数。由于采用不可逆算法得到随机数,源随机数提供者不可能根据最终想要的随机数而反推对自己有利的源随机数,故而保证了随机数的随机性。

其中,上述不可逆算法可以为哈希算法,对上述指定数目的源随机数整体经哈希算法进行计算,得到一个哈希值,并将该哈希值作为所需的随机数。

本发明实施例提供的随机数的生成方法,通过从多个数据源获取多个源随机数,并对这些源随机数经不可逆算法进行计算,生成随机数,从而提高生成随机数产生结果的随机性。

实施例二

如图3所示,其为本发明实施例示出的随机数的生成方法流程图二,该方法可视为图2所示方法的具体实现方式,主要针对从多个数据源获取源随机数的过程进行了细化。如图3所示,该随机数的生成方法包括如下步骤:

s310,接收多个数据提供方提交的数据承诺,数据承诺中携带数据提供方欲提交的源随机数所对应的源随机数经不可逆算法计算得到的承诺值。

由于网络延迟等原因,各数据提供方提供源随机数的时间是不同步的,有早有晚。为了防止个别数据提供方所提交的源随机数是监测到其他数据提供方上传的源随机数之后提交的,存在作弊的可能,因此本方案采用一种“数据承诺+提交数据”的方式(简称“数据承诺”)来限定数据提供方提交源随机数,以保证各数据提供方提供的源随机数是事先提供的,而不是在获知了其他数据提供方所提供的源随机数后再提供的。

所谓“数据承诺”方式提交源随机数即指,在各数据提供方提交源随机数之前,先提交针对欲提交的源随机数的数据承诺,该数据承诺的内容包括欲提交的源随机数所对应的承诺值,该承诺值为数据提供方对欲提交的源随机数经上述不可逆算法计算后获得,以用于后续服务器对接收到的该数据提供方提交的源随机数进行承诺验证。

s320,接收多个数据提供方提交的数据承诺中欲提交的源随机数,并对各源随机数经不可逆算法进行承诺验证。

各数据提供方在提交完数据承诺后,接着会将该数据承诺中承诺值对应的源随机数提供给服务器。服务器在接收到各数据提供方提交的源随机数后,对该随机数经上述数据提供方所采用的相同的不可逆算法进行计算得到一个承诺值,并将该承诺值与之前该数据提供方提交的数据承诺中的承诺值进行比较,以完成承诺验证。

s330,如果承诺验证后确定:计算得到的承诺值与数据提供方提交的数据承诺中的承诺值相同,则接受该数据提供方提交的源随机数。

在完成承诺验证后,如果服务器确定计算得到的承诺值与之前数据提供方提交的数据承诺中的承诺值相同,则表面数据提供方提交的源随机数有效,服务器可接受该数据提供方提交的源随机数以用于计算得到随机数。

上述步骤s310~步骤s330可作为上述步骤s210的细化。

s340,将多个源随机数拼接形成第一字符串,对第一字符串经不可逆算法进行计算,并将得到的计算值作为随机数。

本步骤可作为上述步骤s220的细化。

具体地,针对经承诺验证后所接受的多个源随机数,可先将这些源随机数顺序进行拼接形成一个字符串,即第一字符串;然后对该第一字符串经不可逆算法进行计算,并将得到的计算值作为上述随机数。

需要说明书的是,数据承诺中的承诺值可以为数据提供方对其欲提交的源随机数直接进行不可逆算法而得到的数值,也可以为数据提供方对其欲提交的源随机数以及一些辅助信息(比如数据提供方的身份id等)拼接后,经不可逆算法而得到的数值。相应的,数据提供方在提交的数据承诺和提交源随机数的同时也要提交这些辅助信息,以使得服务器利用这些辅助信息对源随机数进行承诺验证。

另外,在将各数据提供方提交的源随机数顺序进行拼接形成第一字符串时,可以为对数据提供方提交的源随机数直接进行拼接生成第一字符串,也可以为对数据提供方提交的源随机数以及一些辅助信息(比如数据提供方的身份id等)整体拼接后,生成第一字符串。

本发明实施例提供的随机数的生成方法,在图2所示方法的基础上,通过对从多个数据源获取多个源随机数的过程进行展开,以“数据承诺”的方式对数据提供方提交的源随机数进行承诺验证,以防止个别数据提供方所提交的源随机数是监测到其他数据提供方上传的源随机数之后提交的,存在作弊的可能,从而提高生成随机数产生结果的随机性。

实施例三

如图4所示,其为本发明实施例示出的随机数的生成方法流程图三,该方法可视为图2所示方法的具体实现方式,主要对多个源随机数经不可逆算法进行计算,生成一个随机数的过程进行了细化。如图4所示,该随机数的生成方法包括如下步骤:

s410,从多个数据源获取多个源随机数,多个源随机数中至少存在一个源随机数为随机产生。

本步骤s410与上述步骤s210的内容相同。

s420,将多个源随机数拼接形成第一字符串,对第一字符串经不可逆算法进行计算,并将得到的计算值记为随机数种子。

具体地,针对经承诺验证后所接受的多个源随机数,可先将这些源随机数顺序进行拼接形成一个字符串,即第一字符串;然后对该第一字符串经不可逆算法进行计算,并将得到的计算值作为计算上述随机数的随机数种子。

需要说明书的是,在将各数据提供方提交的源随机数顺序进行拼接形成第一字符串时,可以为对数据提供方提交的源随机数直接进行拼接生成第一字符串,也可以为对数据提供方提交的源随机数以及一些辅助信息(比如数据提供方的身份id等)整体拼接后,生成第一字符串。

s430,将随机数种子与附加信息进行拼接形成第二字符串,对第二字符串经所述不可逆算法进行计算,并将得到的计算值作为随机数。

具体地,在生成上述随机数种子后,可以基于该随机数种子以及一些辅助信息(比如随机数编号等)整体拼接后,生成第二字符串;然后对该第二字符串经不可逆算法进行计算,并将得到的计算值作为随机数。

基于随机数种子计算随机数的好处在于,当需要一次性产生多个随机数,和/或数据提供方提供的源随机数缺乏时,可以利用随机数种子结合辅助信息一次性生成多个随机数,以满足随机数的使用需求。

步骤s420~步骤s430可作为上述步骤s220的细化。

本发明实施例提供的随机数的生成方法,在图2所示方法的基础上,通过对多个源随机数经不可逆算法进行计算,生成一个随机数的过程进行展开,以随机数种子作为中间值,可以结合辅助信息一次性生成多个随机数,从而满足对随机数的需求量。

实施例四

如图5所示,其为本发明实施例示出的随机数的生成装置的结构示意图一,该装置可以为设置在网络中的服务器,用于执行如图2所示的方法步骤。如图5所示,该随机数的生成装置包括:

源随机数获取模块510,用于从多个数据源获取多个源随机数,多个源随机数中至少存在一个源随机数为随机产生;

随机数计算模块520,用于对多个源随机数经不可逆算法进行计算,生成一个随机数。

进一步地,如图6所示,在图5所示装置的基础上,上述的源随机数获取模块510可包括:

承诺接收单元610,用于接收多个数据提供方提交的数据承诺,数据承诺中携带数据提供方欲提交的源随机数所对应的源随机数经不可逆算法计算得到的承诺值;

承诺验证单元620,用于接收多个数据提供方提交的数据承诺中欲提交的源随机数,并对各源随机数经不可逆算法进行承诺验证;

如果承诺验证后确定:计算得到的承诺值与数据提供方提交的数据承诺中的承诺值相同,则接受该数据提供方提交的源随机数。

进一步地,在图6所示装置中,随机数计算模块可具体用于,将多个源随机数拼接形成第一字符串,对第一字符串经不可逆算法进行计算,并将得到的计算值作为随机数。

图6所示装置结构可用于执行图3所示方法步骤。

进一步地,如图7所示,在图5所示装置的基础上,上述的随机数计算模块520可包括:

种子生成单元710,用于将多个源随机数拼接形成第一字符串,对第一字符串经不可逆算法进行计算,并将得到的计算值记为随机数种子;

随机数计算单元720,用于将随机数种子与附加信息进行拼接形成第二字符串,对第二字符串经不可逆算法进行计算,并将得到的计算值作为随机数。

图7所示装置结构可用于执行图4所示方法步骤。

进一步地,上述的不可逆算法包括哈希算法,经不可逆算法得到的计算值为哈希值。

本发明实施例提供的随机数的生成装置,通过从多个数据源获取多个源随机数,并对这些源随机数经不可逆算法进行计算,生成随机数,从而提高生成随机数产生结果的随机性。

进一步地,通过对从多个数据源获取多个源随机数的过程进行展开,以“数据承诺”的方式对数据提供方提交的源随机数进行承诺验证,以防止个别数据提供方所提交的源随机数是监测到其他数据提供方上传的源随机数之后提交的,存在作弊的可能,从而提高生成随机数产生结果的随机性。

进一步地,通过对多个源随机数经不可逆算法进行计算,生成一个随机数的过程进行展开,以随机数种子作为中间值,可以结合辅助信息一次性生成多个随机数,从而满足对随机数的需求量。

本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:rom、ram、磁碟或者光盘等各种可以存储程序代码的介质。

最后应说明的是:以上各实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述各实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1