CN110633071A - 一种随机数生成方法及装置 - Google Patents

一种随机数生成方法及装置 Download PDF

Info

Publication number
CN110633071A
CN110633071A CN201910922578.5A CN201910922578A CN110633071A CN 110633071 A CN110633071 A CN 110633071A CN 201910922578 A CN201910922578 A CN 201910922578A CN 110633071 A CN110633071 A CN 110633071A
Authority
CN
China
Prior art keywords
client
random number
digital signature
digital
digital signatures
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
CN201910922578.5A
Other languages
English (en)
Other versions
CN110633071B (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.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent Technology Shenzhen 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 Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN201910922578.5A priority Critical patent/CN110633071B/zh
Publication of CN110633071A publication Critical patent/CN110633071A/zh
Application granted granted Critical
Publication of CN110633071B publication Critical patent/CN110633071B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/64Protecting data integrity, e.g. using checksums, certificates or signatures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/58Random or pseudo-random number generators
    • G06F7/588Random number generators, i.e. based on natural stochastic processes

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Computational Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Information Transfer Between Computers (AREA)
  • Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)

Abstract

本发明实施例公开了一种随机数生成方法及装置。其中,随机数生成方法包括:接收来自多个客户端的第一数字签名;基于智能合约将各个第一数字签名进行合并,并计算得到合并后的第一数字签名的第一哈希值;基于智能合约将第一哈希值转换为第一数值;根据第一数值得到与多个客户端关联的第一合成随机数;将第一合成随机数发送至各个客户端。采用本发明实施例,可基于多个客户端的第一数字签名生成第一合成随机数,第一合成随机数具有较高的公信力。

Description

一种随机数生成方法及装置
技术领域
本申请涉及计算机技术领域,尤其涉及一种随机数生成方法及装置。
背景技术
随着人们日常生活需求的增多,随机数被大规模的使用在一些场景中。例如,在一些城市的购房行为中,有购房需求的客户需要参与卖房中心的摇号操作,通过摇出的随机数号码决定用户是否能够继续参与购房行为。
目前,随机数是由一个客户端在随机数生成器中基于随机数生成算法生成一个随机数,但若多个客户端互不信任,则由一个客户端生成的随机数会被质疑,存在公信力差的问题。
发明内容
本发明实施例提供了一种随机数生成方法及装置,该方法生成的随机数由多个客户端决定,可提高随机数的公信力。
第一方面,本发明实施例提供了一种随机数生成方法,该方法包括:
接收来自多个客户端的第一数字签名;基于智能合约将各个第一数字签名进行合并,并计算得到合并后的第一数字签名的第一哈希值;基于智能合约将第一哈希值转换为第一数值;根据第一数值得到与多个客户端关联的第一合成随机数;将第一合成随机数发送至各个客户端。
在该技术方案中,基于多个客户端的第一数字签名生成第一合成随机数,该第一合成随机数由各个客户端共同决定,使其能被各个客户端认同。第一合成随机数具有较高的公信力。
在一种实现方式中,根据第一数值得到与多个客户端关联的第一合成随机数之后,可以对各个第一数字签名进行排序,得到排序后的第一数字签名。然后,将第一合成随机数转换为一个长度为X的数字序列,X为多个客户端的数量。最后,基于数字序列和排序后的第一数字签名生成多个客户端的第一排序结果,并将多个客户端的第一排序结果发送至各个客户端。
在一种实现方式中,基于数字序列和排序后的第一数字签名生成多个客户端的第一排序结果的具体实施方式可以为:基于数字序列的第N个数值M,确定排序后的第一数字签名中第M+1个第一数字签名对应的客户端为第一排序结果中的第N位。
在一种实现方式中,根据第一数值得到与多个客户端关联的第一合成随机数之后,可以对各个第一数字签名进行排序,得到排序后的第一数字签名。然后,将第一合成随机数除以X,得到余数为A,并根据余数A生成第二排序结果,第二排序结果中排列在第一位的为排序后的第一数字签名中第A+1个第一数字签名对应的客户端。最后,将第二排序结果发送至各个客户端。
在一种实现方式中,将第二排序结果发送至各个客户端之前,可以将各个第一数字签名中除第A+1个第一数字签名外的第一数字签名作为第二数字签名,并对第二数字签名进行排序,得到排序后的第二数字签名。进而,基于智能合约将各个第二数字签名进行合并,并计算得到合并后的第二数字签名的第二哈希值,并基于智能合约将第二哈希值转换为第二数值。然后,根据第二数值得到与多个客户端关联的第二合成随机数。将第二合成随机数除以X-1,得到余数为B,并根据余数B生成第三排序结果,第三排序结果中排列在第一位的为排序后的第二数字签名中第B+1个第一数字签名对应的客户端。最后,根据第二排序结果和第三排序结果,生成第四排序结果。其中,第四排序结果中排列在第一位的客户端是根据第二排序结果得到的,第四排序结果中排列在第二位的客户端是根据第三排序结果得到的。将第四排序结果发送至各个客户端。
在一种实现方式中,根据第二排序结果和第三排序结果,生成第四排序结果,具体实施方式可以为:将第二排序结果得到的排序后的第一数字签名中第A+1个第一数字签名对应的客户端作为第四排序结果中的第一位,将第三排序结果得到的排序后的第二数字签名中第B+1个第二数字签名对应的客户端作为第四排序结果的第二位。
第二方面,本发明实施例提供了一种随机数生成方法,该方法包括:
将对随机数种子的第一数字签名发送至区块链节点装置,以使区块链节点装置先基于智能合约将各个第一数字签名进行合并,然后计算得到合并后的第一数字签名的第一哈希值,再基于智能合约将第一哈希值转换为第一数值,并根据第一数值得到与多个客户端关联的第一合成随机数;接收来自区块链节点装置的第一合成随机数。
在该技术方案中,多个客户端将各自的第一数字签名发送至区块链节点装置,以使区块链节点装置对各个第一数字签名进行校验,可提高各个第一数字签名的可信度。然后,各个客户端接收区块链节点装置基于各个第一数字签名生成的第一合成随机数,第一合成随机数是基于各个客户端的第一数字签名生成的,因此各个客户端不会质疑第一合成随机数的公平性。
在一种实现方式中,接收来自区块链节点装置的第一合成随机数,具体实施方式可以为:接收来自区块链节点装置的排序结果,并基于排序结果确定各个客户端的排序。其中,排序结果可以是第一排序结果、第二排序结果或第四排序结果。
第三方面,本发明提供了一种区块链节点装置,该装置具有实现第一方面或第二方面所述的随机数生成方法的功能。所述功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。所述硬件或软件包括一个或多个与上述功能相对应的模块。
第四方面,本发明实施例提供了一种区块链节点装置,该装置包括存储器、处理器、输入设备以及输出设备,存储器存储一组程序代码,处理器调用存储器中存储的程序代码,用于执行第一方面所涉及到的操作。
第五方面,本发明提供了一种客户端,该客户端具有实现第一方面或第二方面所述的随机数生成方法的功能。所述功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。所述硬件或软件包括一个或多个与上述功能相对应的模块。
第六方面,本发明实施例提供了一种客户端,该客户端包括存储器、处理器、输入设备以及输出设备,存储器存储一组程序代码,处理器调用存储器中存储的程序代码,用于执行第二方面所涉及到的操作。
第七方面,本发明实施例提供了一种计算机可读存储介质,用于储存区块链节点装置或客户端所用的计算机程序指令,其包含用于执行上述第一方面或第二方面所涉及的程序。
通过实施本发明例,区块链节点装置基于各个客户端的各个第一数字签名生成第一合成随机数。第一合成随机数由各个客户端决定,使其不易被各个客户端质疑,对于各个客户端来说,具有公信力。然后,基于第一合成随机数生成多个客户端的第一排序结果和第二排序结果。各个客户端基于第一排序结果可确定各个客户端的排序,各个客户端基于第二排序结果可确定一个客户端的排序或两个客户端的排序。再基于各个第二数字签名生成第二随机数,并基于第二随机数生成第三排序结果,基于第二排序结果和第三排序结果,生成第四排序结果。客户端可以基于第四排序结果确定两个客户端的排序或三个客户端的排序。各个排序结果都是基于第一合成随机数或第二合成随机数生成的,对于各个客户端来说,具有公信力。
附图说明
为了更清楚地说明本发明实施例或背景技术中的技术方案,下面将对本发明实施例或背景技术中所需要使用的附图进行说明。
图1为本发明提供的一种随机数生成的架构示意图;
图2为本发明实施例提供的一种区块链网络的架构示意图;
图3为本发明实施例提供的一种随机数生成方法的流程示意图;
图4为本发明实施例提供的另一种随机数生成方法的流程示意图;
图5为本发明实施例提供的另一种随机数生成方法的流程示意图;
图6为本发明实施例提供的另一种随机数生成方法的流程示意图;
图7为本发明实施例提供的一种区块链节点装置的结构示意图;
图8为本发明实施例提供的一种区块链节点装置的结构示意图;
图9为本发明实施例提供的一种客户端的结构示意图;
图10为本发明实施例提供的一种客户端的结构示意图。
具体实施方式
下面结合本发明实施例中的附图对本发明实施例进行描述。
现有的随机数是由一个客户端在随机数生成器中基于随机数生成算法直接生成的。但若多个客户端互不信任,则由一个客户端生成的随机数会被质疑,存在公信力差的问题。
为解决上述问题,本发明实施例提出了一种随机数生成方法及装置。该方法中,针对多个客户端中的每个客户端,客户端可以先使用自己的第一私钥对该客户端的随机数种子进行处理,得到多个第一数字签名,该客户端将第一数字签名发送给区块链节点装置。区块链节点装置获取到所有客户端发送的第一数字签名之后,可以基于多个第一数字签名生成第一合成随机数。这种基于各个客户端的第一数字签名生成第一合成随机数的方式,可保证生成的第一合成随机数的随机性,同时不易被各个客户端质疑,对于各个客户端来说具有公信力。
请参见图1,图1是本发明实施例提供的一种随机数生成的架构示意图,多个账户将种子信息签名发送至区块链节点装置,各个账户对应各个客户端,例如,账户1对应客户端1,账户2对应客户端2,账户3对应客户端3,区块链节点装置包括节点1、节点2和节点3,种子信息包括随机数种子,种子信息签名包括第一数字签名;区块链节点装置调用智能合约将各个种子信息签名进行合并,并计算得到合并后种子信息签名的哈希值;区块链节点装置根据哈希值计算得到随机数,随机数包括第一合成随机数、第二合成随机数。本方发明生成的随机数由各个账户的种子信息签名决定,具有较高的公信力。
在随机数生成过程中,主要涉及到客户端。其中,客户端可以运行于手机、计算机设备和其他具有无线通信功能的手持设备等。
智能合约是一种旨在以信息化方式传播、验证或执行合同的计算机协议,允许在没有第三方的情况下进行可信交易,这些交易可追踪且不可逆转。一个智能合约是一套以数字形式定义的承诺,包括合约参与方可以在上面执行这些承诺的协议,是一段写在区块链上的代码。区块链节点装置可使用智能合约对各个第一数字签名进行合并,也可使用智能合约将第一哈希值转换为第一数值。
哈希值,又称:散列函数(或散列算法,又称哈希函数)是一种从任何一种数据中创建小的数字“指纹”的方法。该函数将数据打乱混合,重新创建一个叫做散列值的指纹。散列值通常用一个随机字母和数字组成的字符串来代表。区块链网络中每一个信息具有唯一的哈希值,可通过哈希值判断信息是否被篡改。
为了更好的理解本发明实施例公开的一种随机数生成方法及装置,下面首先对本发明实施例适用的区块链网络的架构进行描述。
请参见图2,图2是本发明实施例提供的一种区块链网络的架构示意图。如图2所示,该区块链网络包括第一区块链节点装置201、第二区块链节点装置202和第三区块链节点装置203。第一区块链节点装置201是区块链网络中的任一区块链节点装置,可以是第一区块链节点装置,可以是第二区块链节点装置,也可以是第三区块链节点装置。任一区块链节点装置可以基于各个第一数字签名生成第一合成随机数,并将第一合成随机数发送给各个客户端。图2所示的区块链网络由三个区块链节点装置组成,仅用于示例,并不构成对本发明实施例的限定。
客户端可以运行在区块链网络的任一区块链节点装置中,该客户端是经过区块链网络认证后的客户端。可选的,客户端可以独立于区块链网络的任一区块链节点装置,该客户端可以是未经过区块链网络认证的客户端。
一种实现方式中,多个客户端将各个第一数字签名发送至区块链节点装置,区块链节点装置基于各个第一数字签名生成第一合成随机数。其中,任一客户端的第一数字签名是客户端使用客户端的第一私钥对客户端的随机数种子进行处理得到的,例如,在购房摇号操作中,各个用户对应各个客户端,当各个用户有购房需求时,各个客户端基于各个用户的购房需求生成各个随机数种子,并使用客户端的第一私钥对所述随机数种子进行处理,得到第一数字签名。
另一种实现方式中,多个客户端将各个数字签名发送至距离各个客户端最近区块链节点装置,或多个客户端将各个第一数字签名发送至与各个客户端通信质量最好的区块链节点装置,各个区块链节点装置接收到多个第一数字签名后,将各个第一数字签名发送给区块链节点装置,区块链节点装置基于各个第一数字签名生成第一合成随机数。
基于上述描述,本发明实施例提出一种如图3所示的随机数生成方法,该随机数生成方法可以包括以下步骤S301-S306:
步骤S301:区块链节点装置接收来自多个客户端的第一数字签名。
其中,区块链节点装置接收来自多个客户端的第一数字签名之前,服务器对不同客户端创建不同的第一密钥对,第一密钥对包括第一私钥和第一公钥。任一客户端的第一数字签名是客户端使用客户端的第一私钥对客户端的随机数种子进行处理得到的。各个客户端使用第一私钥对随机数种子进行加密,可提高随机数种子的安全。
在一种实现方式中,客户端通过随机数生成器基于随机数生成算法生成随机数种子,该方式生成的随机数种子由生成随机数种子的客户端决定。
在一种实现方式中,任一节点装置接收来自任一客户端的交易数据,并基于交易数据生成区块;若区块链节点装置对区块共识通过后,则区块链节点装置中的虚拟机使用智能合约基于区块信息生成随机数种子,并将随机数种子发送至客户端。
可选的,区块链节点装置将随机数种子发送至客户端之前,可以计算得到该随机数种子的哈希值,并将该哈希值发送至客户端,客户端对此哈希值进行解密,获取上述步骤生成的随机数种子。
在一种实现方式中,区块链节点装置将区块发送至区块链网络中的各个区块链节点装置,各个区块链节点装置对该区块进行校验,并生成校验结果,以校验响应的方式发送给生成区块的区块链节点装置。当生成区块的区块链节点装置接收到校验响应中包含的校验结果为通过的个数超过预设阈值时,生成区块的区块链节点装置确定该区块通过共识。
该方式生成随机数种子的过程中有区块链网络中各个区块链节点装置参与区块的校验,见证了随机数种子生成的过程,具有公信力。
步骤S302:区块链节点装置基于智能合约将各个第一数字签名进行合并。
具体的,区块链节点装置先对各个第一数字签名进行排序,得到排序后的各个第一数字签名,再基于智能合约将排序后的各个第一数字签名以首尾相连的方式进行合并,生成合并后的第一数字签名,其中,首尾相连的具体方式为当前第一数字签名的尾部与下一个第一数字签名的首部相连。此处智能合约存储有将各个第一数字签名以首尾相连的方式进行合并的程序代码。例如,区块链节点装置对三个第一数字签名EG、MN、AC进行排序后,AC排在第一位,EG排在第二位,MN排在第三位,则基于智能合约将三个第一数字签名进行合并,得到合并后的第一数字签名为ACEGMN。
在一种实现方式中,区块链节点装置基于智能合约将各个第一数字签名进行合并之前,可以对各个第一数字签名进行校验。
在一种实现方式中,各个第一数字签名可以包含各个客户端的身份信息,区块链节点装置对各个第一数字签名进行校验可以包括:校验各个第一数字签名发送方的身份,即校验各个客户端的身份,进而提高接收到的第一数字签名的可信度。具体的,区块链节点装置使用服务器对不同客户端创建的不同第一公钥对对应的第一数字签名进行校验,若校验成功,则表明第一数字签名的发送方为发送该第一数字签名的客户端,区块链节点装置对第一数字签名校验成功。通过这种方式,有利于提高各个第一数字签名的可信度。
在一种实现方式中,若区块链节点装置对各个第一数字签名校验成功,则将各个第一数字签名发送至区块链网络中的各个区块链节点装置。在区块链节点装置对各个第一数字签名校验成功的情况下,才将各个第一数字签名发送至区块链网络中的各个区块链节点装置,可以提高各个第一数字签名的可信度。区块链网络中的各个区块链节点装置对各个第一数字签名进行校验,并将针对各个第一数字签名的校验结果以第一区块校验响应的形式发送给区块链节点装置。
具体的,区块链网络中的各个区块链节点装置可以对第一数字签名的发送方的身份进行校验。需要说明的是,不管校验结果为通过或者未通过,区块链网络中的各个区块链节点装置均可以向区块链节点装置发送第一数字签名的校验响应。区块链节点装置接收来自区块链网络中的各个区块链节点装置的第一数字签名校验响应。其中,来自区块链网络中的各个区块链节点装置的第一数字签名校验响应所包含的针对第一数字签名的校验结果可以是相互独立的,即各个区块链节点装置针对第一数字签名进行的校验过程可以是不受其他区块链节点装置影响的。例如,来自一个区块链节点装置的第一数字签名校验响应所包含的针对第一数字签名的校验结果可以是校验通过,来自另一个区块链节点装置的第一数字签名校验响应所包含的针对第一数字签名的校验结果可以是校验未通过。
区块链节点装置根据各个第一数字签名校验响应,得到各个第一数字签名校验结果,进而确定各个第一数字签名是否通过区块链网络的校验,即各个第一数字签名校验结果是根据区块链网络中的各个区块链节点装置返回的各个第一数字签名校验响应共同确定的。通过这种方式,可以使得区块链网络中的各个区块链节点装置均参与针对第一数字签名的校验过程,有利于提高各个第一数字签名的可信度。
在一种实现方式中,区块链节点装置根据各个区块链节点装置对各个第一数字签名的校验结果确定各个第一数字签名是否通过区块链网络的校验。各个区块链节点装置对一个第一数字签名的校验响应包含的校验结果为通过的数量大于第一预设阈值,则区块链节点装置确定该第一数字签名通过区块链网络的校验。例如,第一预设阈值为区块链网络中各个区块链节点装置数量的50%,若该区块链网络由20个区块链节点装置组成,有12个区块链节点装置对第一数字签名A的校验结果为通过,区块链网络中区块链节点装置对第一数字签名A的校验结果为通过的数量大于第一预设阈值,则区块链节点装置确定第一数字签名A通过区块链网络的校验。需要说明的是,上述举例仅用于说明若各个第一数字签名校验响应包含的校验结果为通过的数量超过第一预设阈值,则区块链节点装置确定各个第一数字签名通过区块链网络的校验。在其他可行的实现方式中,若各个第一数字签名校验响应包含的校验结果为未通过的数量超过第二预设阈值,则区块链节点装置确定各个第一数字签名未通过区块链网络的校验。其中,第一预设阈值和第二预设阈值可以相等,也可以不相等。
区块链节点装置根据各个区块链节点装置对各个第一数字签名校验响应包含的校验结果确定所有第一数字签名都通过区块链网络的校验,则区块链节点装置对各个第一数字签名校验成功。
步骤S303:区块链节点装置计算得到合并后的第一数字签名的第一哈希值。
具体的,区块链节点装置基于哈希算法计算得到合并后的第一数字签名的第一哈希值。其中,哈希算法可以包括但不限于SHA512算法、SHA224算法、SHA384算法等。该方法计算得到合并后的第一数字签名的第一哈希值,使其不易被篡改。
步骤S304:区块链节点装置将第一哈希值转换为第一数值。
具体的,第一哈希值为随机数字和字母组合的字符串,区块链节点装置先将第一哈希值中的各个随机字母转换为美国信息交换标准代码(American Standard Code forInformation Interchange,ASCII)所对应的十进制数字,生成一组只含数字的序列,作为更新后的第一哈希值,再将更新后的第一哈希值中各个数字相加得到一个结果,将该结果作为第一数值。例如,第一哈希值为“1A38c0”,将第一哈希值中的各个字母转换为ASCII所对应的十进制数字,生成的只含数字的数字序列为“16538990”,将该数字序列的各个数字相加,得到相加结果为41,则将第一哈希值转换为第一数值为41。
步骤S305:区块链节点装置根据第一数值得到与多个客户端关联的第一合成随机数。
区块链节点装置将步骤S304得到的第一数值作为与多个客户端关联的第一合成随机数。例如,步骤S304得到的一个第一数值为41,则将第一数值41作为与多个客户端关联的第一合成随机数,即区块链节点装置基于多个客户端的第一数字签名生成的第一合成随机数为41。
该第一合成随机数是基于各个客户端的第一数字签名生成的,也就是说该第一合成随机数由各个客户端决定,使得第一合成随机数更具有公信力,能被各个客户端认可。
步骤S306:区块链节点装置将第一合成随机数发送至各个客户端。
区块链节点装置将步骤S305得到的第一合成随机数发送至各个客户端,各个客户端接收第一合成随机数,使得各个客户端可公平享有第一合成随机数。
在一种实现方式中,区块链节点装置将第一合成随机数发送至各个客户端之前,可以采用非对称加密算法对区块链节点装置创建第二密钥对,第二密钥对包括第二公钥和第二私钥。此处的非对称加密算法可包括但不限于:Elgamal算法(一种非对称加密算法)、Rabin算法(一种非对称加密算法)、Diddie-Hellman算法(一种非对称加密算法)、ECC算法(椭圆曲线加密算法)。区块链节点装置将第二公钥发送至各个第一数字签名对应的各个客户端。区块链节点装置使用第二私钥对第一合成随机数进行处理,得到第二数字签名。区块链节点装置将第二数字签名和第一合成随机数发送至各个客户端,以使各个第一数字签名对应的各个客户端使用第二公钥对第二数字签名进行解密,获取第一合成随机数。
本申请实施例提出了一种随机数生成方法,该方法基于多个客户端的各个第一数字签名生成第一合成随机数,该第一合成随机数与各个客户端相关联,由各个客户端的第一数字签名决定,使得该第一合成随机数对于各个客户端来说具有较高的公信力。
请参见图4,图4是本发明实施例提供的另一种随机数生成方法的流程示意图,该方法包括但不限于步骤S401-S410。
步骤S401:区块链节点装置接收来自多个客户端的第一数字签名。
步骤S402:区块链节点装置基于智能合约将各个第一数字签名进行合并。
步骤S403:区块链节点装置计算得到合并后的第一数字签名的第一哈希值。
步骤S404:区块链节点装置将第一哈希值转换为第一数值。
步骤S405:区块链节点装置根据第一数值得到与多个客户端关联的第一合成随机数。
本申请实施例中的步骤S401-S405具体可参见上述实施例中步骤S301-S305的执行过程,本发明实施例不再赘述。
步骤S406:区块链节点装置对各个第一数字签名进行排序,得到排序后的第一数字签名。
在一种实现方式中,区块链节点装置可以基于接收各个第一数字签名的时间顺序对各个第一数字签名进行排序,得到排序后的第一数字签名。
在一种实现方式中,区块链节点装置可以在接收到各个第一数字签名后,随机对各个第一数字签名进行排序,得到排序后的第一数字签名。
区块链节点装置对各个第一数字签名进行排序,使得各个第一数字签名具有唯一的顺序编号,可以明显的区别各个第一数字签名。
步骤S407:区块链节点装置将第一合成随机数转换为一个长度为X的数字序列,X为多个客户端的数量。
具体的,区块链节点装置先将第一整数转换为阶乘进制。阶乘进制是一种数的表示方法,但其基底不再是某个数字的幂(如二进制中各个位置代表的值为20,21,22,23,…,而是位的阶乘:0!,1!,2!,3!,…),在阶乘进制中第i位可选的数字不再是固定的,而是[0,i]。然后,区块链节点装置基于插入法将所述阶乘进制转换为一个长度为X的序列。插入法是以0为基础开始构建一个序列[0],再在序列[0]上插入数字1,2,…,后面比插入数字小的个数在该序列上插入1,2,…,构成需要长度的序列。例如,第一数值为步骤S304中所述的41,客户端的数量X为5,则将第一整数41转换为阶乘进制得到:(41)10=(1,2,2,1)!。然后,基于插入法将该阶乘进制转换为一个长度为5的序列,因为序列的长度为5,因此需要以0为基础构建序列,在序列[0]的基础上插入数字1,2,3,4,得到长度为5的序列为:“2,1,3,0,4”。
区块链节点装置将第一合成随机数通过转换,得到了一个长度为X的数字序列。
步骤S408:区块链节点装置基于数字序列和排序后的第一数字签名生成多个客户端的第一排序结果。
具体的,各个第一数字签名和各个客户端是一一对应的,且可以通过第一数字签名找到对应的客户端,则区块链节点装置可以基于数字序列的第N个数值M,确定排序后的第一数字签名中第M+1个第一数字签名对应的客户端为第一排序结果中的第N位,基于相同的方法依次确定第一排序结果中的X位排序结果,生成多个客户端的第一排序结果。
示例性的,数字序列为步骤S407中所得到的“2,1,3,0,4”,数字序列第一个数值为2,则区块链节点装置确定排序后的第一数字签名中的第3个第一数字签名对应的客户端作为第一排序结果中的第一位。数字序列第二个数值为1,则区块链节点装置确定排序后的第一数字签名中的第2个第一数字签名对应的客户端作为第一排序结果中的第二位。数字序列第三个数值为3,则区块链节点装置确定排序后的第一数字签名中的第4个第一数字签名对应的客户端作为第一排序结果中的第三位。区块链节点装置基于上述相同的方法依次确定第一排序结果中的第四位、第五位,生成五个客户端的第一排序结果。
步骤S409:区块链节点装置将多个客户端的第一排序结果发送至各个客户端。
区块链节点装置生成多个客户端的第一排序后,将多个客户端的第一排序结果发送至各个客户端,使得各个客户端公平享有该多个客户端的第一排序结果。
在一种实现方式中,区块链节点装置将多个客户端的第一排序结果发送至各个客户端之前,可以使用步骤S306中对第一区块链节点装置创建的第二私钥对第一排序结果进行处理,得到第三数字签名。区块链节点装置将第二公钥发送至各个第一数字签名对应的各个客户端。区块链节点装置将第三数字签名和第一排序结果发送至各个客户端,以使各个第一数字签名对应的各个客户端使用第二公钥对第三数字签名进行解密,获取第一排序结果。
步骤S410:各个客户端基于多个客户端的第一排序结果确定各个客户端的排序结果。
具体的,各个客户端接收到来自区块链节点装置的第一排序结果后,基于此第一排序结果确定各个客户端的排序。第一排序结果是基于区块链节点装置生成的第一合成随机数转换的数字序列和排序后的第一数字签名生成的,间接的也是由各个客户端的第一数字签名决定的,因此该第一排序结果对于各个客户端来说,具有公信力。
在一种实现方式中,各个第一数字签名对应的各个客户端可以接收来自区块链节点装置的第二公钥、第三数字签名和第一排序结果,使用第二公钥对第三数字签名进行解密,获取第一排序结果,基于第一排序结果确定各个客户端的排序。
在一种实现方式中,各个客户端基于多个客户端的第一排序结果确定各个客户端的排序,具体可以应用在学校的学生考试前的座位排号中。区块链节点装置基于各个学生的第一数字签名生成第一合成随机数,然后将第一合成随机数转换为各个学生的第一排序结果,学校可以根据学生的第一排序结果,确定各个学生在考室中的坐位号,各个学生的座位号都是基于各个学生的第一数字签名生成的,对于各个学生来说,具有公信力。
本发明实施例提出了一种随机数生成方法,并基于生成的第一合成随机数生成多个客户端的第一排序结果,第一排序结果间接由各个客户端的第一数字签名决定,对于各个客户端来说,具有公信力。
请参见图5,图5是本发明实施例提供的另一种随机数生成方法的流程示意图,该方法包括但不限于步骤S501-S510。
步骤S501:区块链节点装置接收来自多个客户端的第一数字签名。
步骤S502:区块链节点装置基于智能合约将各个第一数字签名进行合并。
步骤S503:区块链节点装置计算得到合并后的第一数字签名的第一哈希值。
步骤S504:区块链节点装置将第一哈希值转换为第一数值。
步骤S505:区块链节点装置根据第一数值得到与多个客户端关联的第一合成随机数。
步骤S506:区块链节点装置对各个第一数字签名进行排序,得到排序后的第一数字签名。
本申请实施例中的步骤S501-S506具体可参见上述实施例中步骤S401-S406的执行过程,本发明实施例不再赘述。
步骤S507:区块链节点装置将第一合成随机数除以X,得到余数为A。
区块链节点装置生成第一合成随机数后,将第一合成随机数除以X,得到余数为A。例如,第一合成随机数为步骤S305所示例的,其数值为41,X为步骤S407中所示例的,其数值为5,将第一合成随机41除以5,得到余数为1。
步骤S508:区块链节点装置根据余数A生成第二排序结果。
具体的,区块链节点装置根据步骤S507得到的余数A生成第二排序结果,第二排序结果中排列在第一位的为排序后的第一数字签名中第A+1个第一数字签名对应的客户端。例如,得到的余数A为步骤S507中所示的,其数值为1,则将排序后的第一数字签名中第2个第一数字签名对应的客户端排在第一位。
在一种实现方式中,上述得到的第二排序结果可以作为两个客户端的排序。例如,区块链节点装置使用上述方法基于两个客户端的第一数字签名生成的第一合成随机数为68,将第一合成随机数除以2,得到余数为0,则将排序后的两个第一数字签名中的第1个第一数字签名对应的客户端排在第一位,进而两个第一数字签名中的第2个第一数字签名对应的客户端排在第二位,从而生成两个客户端第二排序结果。
步骤S509:区块链节点装置将第二排序结果发送至各个客户端。
区块链节点装置生成第二排序结果后,将第二排序结果发送至各个客户端,使得各个客户端均可公平享有第二排序结果。
在一种实现方式中,区块链节点装置将多个客户端的第二排序结果发送至各个客户端之前,可以使用步骤S306中对第一区块链节点装置创建的第二私钥对第二排序结果进行处理,得到第四数字签名。区块链节点装置将第二公钥发送至各个第一数字签名对应的各个客户端。区块链节点装置将第四数字签名和第二排序结果发送至各个客户端,以使各个第一数字签名对应的各个客户端使用第二公钥对第四数字签名进行解密,获取第二排序结果。
步骤S510:各个客户端基于第二排序结果,确定客户端的排序。
各个客户端接收到来自区块链节点装置的第二排序后,基于第二排序结果确定客户端的排序。
在一种实现方式中,各个第一数字签名对应的各个客户端可以接收来自区块链节点装置的第二公钥、第四数字签名和第二排序结果,使用第二公钥对第四数字签名进行解密,获取第二排序结果,基于第二排序结果确定客户端的排序。
在一种实现方式中,各个客户端可以基于第二排序结果确定排在第一位的客户端。
在一种实现方式中,两个客户端可以基于第二排序结果确定分别排在第一位、第二位的客户端。
本发明实施例提出了一种随机数生成方法,并基于生成的第一合成随机数生成第二排序结果,客户端可基于第二排序结果确定一个客户端的排序、两个客户端的排序。
请参见图6,图6为在上述步骤S509之后还可执行的步骤,包括但不限于步骤S601-S613。
步骤S601:区块链节点装置将排序后各个第一数字签名中除第A+1个第一数字签名外的各个第一数字签名作为第二数字签名。
区块链节点装置将排序后各个第一数字签名中除所第A+1个第一数字签名外的第一数字签名作为第二数字签名。例如,区块链节点装置得到的余数A为步骤S507所示,其数值为1,则将排序后各个第一数字签名中除第2个第一数字签名外的各个第一数字签名作为第二数字签名。
步骤S602:区块链节点装置对第二数字签名进行排序,得到排序后的第二数字签名。
在一种实现方式中,区块链节点装置可以随机对各个第二数字签名进行排序,得到排序后的第二数字签名。
区块链节点装置对各个第二数字签名进行重新排序,使得各个第二数字签名具有不同于各个第一数字签名的唯一顺序编号,可以明显的区别各个第二数字签名。
步骤S603:区块链节点装置基于智能合约将各个第二数字签名进行合并,得到合并后的第二数字签名。
具体的,基于智能合约将各个第二数字签名以首尾相连的方式进行合并,得到合并后的第二数字签名。
步骤S604:区块链节点装置计算得到合并后的第二数字签名的第二哈希值。
具体的,区块链节点装置基于哈希算法计算得到合并后第二数字签名的第二哈希值。其中,哈希算法可以包括但不限于SHA512算法、SHA224算法、SHA384算法等。
步骤S605:区块链节点装置将第二哈希值转换为第二数值。
具体的,区块链节点装置使用步骤S304中的方法将第二哈希值转换为第二数值。
在一种实现方式中,若第二哈希值为一组随机数字组成的序列,则将第二哈希值中的各个随机数字相加,得到一个结果,将该结果作为第二数值的值。因此,将第二哈希值转换为了第二数值。例如,第二哈希值为“168u7A2c”,将第一哈希值中的各个数字相加,得到相加结果为62,则将第二哈希值转换为第二数值为62。
步骤S606:区块链节点装置根据第二数值得到与多个客户端关联的第二合成随机数。
区块链节点装置将步骤S605得到的第二数值作为与多个客户端关联的第二合成随机数。例如,步骤S605得到的一个第二数值为62,则第二数值62为与多个客户端关联的第二合成随机数,即区块链节点装置基于多个客户端的第二数字签名生成的第二合成随机数为62。
该第二合成随机数是基于各个客户端的第二数字签名生成的,也就是说该第二合成随机数由各个客户端决定,使得第二合成随机数更具有公信力,能被各个客户端认可。
步骤S607:区块链节点装置将第二合成随机数除以X-1,得到余数为B。
区块链节点装置生成第二合成随机数后,将第二合成随机数除以X-1,得到余数为B。例如,第一合成随机数为步骤S606得到的,其数值为62,X为步骤S407中所示例的,X为5,将第一合成随机62除以4,得到余数为2。
步骤S608:区块链节点装置根据余数B生成第三排序结果。
具体的,区块链节点装置根据步骤S607得到的余数B生成第三排序结果,第三排序结果中排列在第一位的为排序后的第二数字签名中第B+1个第二数字签名对应的客户端。例如,得到的余数B为步骤S607中所示的2,则将排序后的第二数字签名中第3个第二数字签名对应的客户端排在第一位。
步骤S609:区块链节点装置根据第二排序结果和第三排序结果生成第四排序结果。
具体的,区块链节点装置根据第二排序结果和第三排序结果生成第四排序结果。第四排序结果中排列在第一位的客户端是根据第二排序结果得到的,第四排序结果中排列在第二位的客户端是根据第三排序结果得到的。区块链节点装置将第二排序结果得到的排序后的第一数字签名中第A+1个第一数字签名对应的客户端作为第四排序结果中的第一位,将第三排序结果得到的排序后的第二数字签名中第B+1个第二数字签名对应的客户端作为第四排序结果的第二位。
示例性的,第二排序结果如步骤S508所示,将排序后的第一数字签名中第2个第一数字签名对应的客户端排在第一位。第三排序结果如步骤S608所示,将排序后的第二数字签名中第3个第二数字签名对应的客户端排在第一位。则区块链节点装置将排序后的第一数字签名中第2个第一数字签名对应的客户端作为第四排序结果中的第一位,将排序后的第二数字签名中第3个第二数字签名对应的客户端作为第四排序结果中的第二位。
在一种实现方式中,上述得到的第四排序结果可以作为三个客户端的排序。例如,区块链节点装置基于3个客户端的3个第一数字签名生成的第二排序结果为第3个排序后第一数字签名对应的客户端排在第一位,区块链节点装置基于除第3个排序后第一数字签名外的2个第二数字签名,生成的第三排序结果为排序后第二数字签名中的第1个第二数字签名对应的客户端排在第一位。则区块链节点装置将排序后的第一数字签名中第3个第一数字签名对应的客户端作为第四排序结果中的第一位,将排序后的第二数字签名中第1个第二数字签名对应的客户端作为第四排序结果中的第二位,将剩下一个第二数字签名对应的客户端作为第四排序结果中的第三位,生成三个客户端的第四排序结果。
步骤S610:将区块链节点装置将第四排序结果发送至各个客户端。
区块链节点装置生成第四排序结果后第四排序结果发送至各个客户端,使得各个客户端均可享有第四排序结果。
在一种实现方式中,区块链节点装置将多个客户端的第四排序结果发送至各个客户端之前,可以使用步骤S306中对第一区块链节点创建的第二私钥对第四排序结果进行处理,得到第五数字签名。区块链节点装置将第二公钥发送至各个第一数字签名对应的各个客户端。区块链节点装置将第五数字签名和第四排序结果发送至各个客户端,以使各个第一数字签名对应的各个客户端使用第二公钥对第五数字签名进行解密,获取第四排序结果。
步骤S611:区块链节点装置基于第四排序结果,确定客户端的排序。
各个客户端接收到来自区块链节点装置的第四排序后,基于第四排序结果确定客户端的排序。
在一种实现方式中,各个第一数字签名对应的各个客户端可以接收来自区块链节点装置的第二公钥、第五数字签名和第四排序结果,使用第二公钥对第五数字签名进行解密,获取第四排序结果,基于第四排序结果确定客户端的排序。
在一种实现方式中,三个客户端可以基于第四排序结果确定此三个客户端的排序。
本发明实施例在步骤S508后基于各个第二数字签名生成第二合成随机数,并基于第二合成随机数生成第三排序结果,最后基于第二排序结果、第三排序结果生成第四排序结果,客户端可基于第四排序结果确定两个客户端的排序、三个客户端的排序。
请参见图7,图7是本发明实施例提供的一种区块链节点装置的结构示意图,所述区块链节点装置可以用于图3-图6所示实施例中区块链节点装置所执行的步骤,所述区块链节点装置70可以包括:
接收模块701,用于接收来自多个客户端的第一数字签名,任一客户端的第一数字签名是客户端使用客户端的第一私钥对客户端的随机数种子进行处理得到的;
合并模块702,用于基于智能合约将各个第一数字签名进行合并;
计算模块703,用于计算得到合并后第一数字签名的第一哈希值;
转换模块704,用于基于智能合约将第一哈希值转换为第一数值;
生成模块705,用于根据第一数值生成与多个客户端关联的第一合成随机数;
发射模块706,用于将第一合成随机数发送至各个客户端。
在一种实现方式中,区块链节点装置70还可以包括:
排序模块707,用于对各个第一数字签名进行排序,得到排序后的第一数字签名;转换模块704,还用于将第一合成随机数转换为一个长度为X的数字序列,X为多个客户端的数量;生成模块705,还用于基于数字序列和排序后的第一数字签名生成多个客户端的第一排序结果;发射模块706,还用于将多个客户端的第一排序结果发送至各个客户端。
在一种实现方式中,区块链节点装置70还可以包括:
确定模块708,用于基于数字序列的第N个数值M,确定排序后的第一数字签名中第M+1个第一数字签名对应的客户端为第一排序结果中的第N位。
在一种实现方式中,排序模块707,还用于对各个第一数字签名进行排序,得到排序后的第一数字签名;计算模块703,还用于将第一合成随机数除以X,得到余数为A;生成模块705,还用于根据余数A生成第二排序结果,第二排序结果中排列在第一位的为排序后的第一数字签名中第A+1个第一数字签名对应的客户端;发射模块706,还用于将第二排序结果发送至各个客户端。
在一种实现方式中,确定模块708,还用于将各个第一数字签名中除第A+1个第一数字签名外的第一数字签名作为第二数字签名;排序模块707,还用于对第二数字签名进行排序,得到排序后的第二数字签名;合并模块702,还用于基于智能合约将各个第二数字签名进行合并;计算模块703,还用于计算得到合并后第二数字签名的第二哈希值;转换模块704,还用于基于智能合约将第二哈希值转换为第二数值;生成模块705,还用于根据第二数值生成与多个客户端关联的第二合成随机数;计算模块703,还用于将第二合成随机数除以X-1,得到余数为B;生成模块705,还用于根据余数B生成第三排序结果,第三排序结果中排列在第一位的为排序后的第二数字签名中第B+1个第一数字签名对应的客户端;生成模块705,还用于根据第二排序结果和第三排序结果,生成第四排序结果,第四排序结果中排列在第一位的客户端是根据第二排序结果得到的,第四排序结果中排列在第二位的客户端是根据第三排序结果得到的;发射模块706,还用于将第四排序结果发送至各个客户端。
在一种实现方式中,确定模块708,还用于将第二排序结果得到的排序后的第一数字签名中第A+1个第一数字签名对应的客户端作为第四排序结果中的第一位,将第三排序结果得到的排序后的第二数字签名中第B+1个第二数字签名对应的客户端作为第四排序结果的第二位。
请参见图8,图8是本发明实施例提供的一种区块链节点装置的结构示意图,该区块链节点装置70包括处理器801、存储器802、通信接口803,所述处理器801、所述存储器802、所述通信接口803通过一条或多条通信总线连接。
处理器801被配置为支持区块链节点装置执行图3-图6所示实施例中区块链节点装置相应的功能。该处理器801可以是中央处理器(central processing unit,CPU),网络处理器(network processor,NP),硬件芯片或者其任意组合。
存储器802用于存储程序代码等。存储器802可以包括易失性存储器(volatilememory),例如随机存取存储器(random access memory,RAM);存储器802也可以包括非易失性存储器(non-volatile memory),例如只读存储器(read-only memory,ROM),快闪存储器(flash memory),硬盘(hard disk drive,HDD)或固态硬盘(solid-state drive,SSD);存储器802还可以包括上述种类的存储器的组合。
通信接口803用于接收和发送数据,例如,通信接口803用于接收来自多个客户端的第一数字签名,或者,通信接口803用于将第一合成随机数发送至各个客户端等。
在本发明实施例中,该区块链节点装置80包括多个通信接口,其中,用于发送数据的通信接口和用于接收数据的通信接口可以不为同一个通信接口。
处理器801可以调用存储器802中存储的程序代码以执行以下操作:
通信接口803接收来自多个客户端的第一数字签名;
处理器801基于智能合约将各个第一数字签名进行合并,并计算得到合并后第一数字签名的第一哈希值;
处理器801基于智能合约将第一哈希值转换为第一数值;
处理器801根据第一数值得到与多个客户端关联的第一合成随机数;
处理器801通过通信接口803将第一合成随机数发送至各个客户端。
在一种实现方式中,根据第一数值得到与多个客户端关联的第一合成随机数之后,还可以执行以下操作:
处理器801可以对各个第一数字签名进行排序,得到排序后的第一数字签名;
处理器801将第一合成随机数转换为一个长度为X的数字序列,X为多个客户端的数量;
处理器801基于数字序列和排序后的第一数字签名生成多个客户端的第一排序结果;
处理器801通过通信接口803将多个客户端的第一排序结果发送至各个客户端。
在一种实现方式中,处理器801基于数字序列和排序后的第一数字签名生成多个客户端的第一排序结果,可以包括:处理器801基于数字序列的第N个数值M,确定排序后的第一数字签名中第M+1个第一数字签名对应的客户端为第一排序结果中的第N位。
在一种实现方式中,处理器801根据第一数值得到与多个客户端关联的第一合成随机数之后,还可以执行以下操作:
处理器801可以对各个第一数字签名进行排序,得到排序后的第一数字签名;
处理器801将第一合成随机数除以X,得到余数为A;
处理器801根据余数A生成第二排序结果,第二排序结果中排列在第一位的为排序后的第一数字签名中第A+1个第一数字签名对应的客户端;
处理器801通过通信接口803将第二排序结果发送至各个客户端。
在一种实现方式中,处理器801将第二排序结果发送至各个客户端之前,还可以执行以下操作:
处理器801可以将各个第一数字签名中除第A+1个第一数字签名外的第一数字签名作为第二数字签名;
处理器801对第二数字签名进行排序,得到排序后的第二数字签名;
处理器801基于智能合约将各个第二数字签名进行合并;
处理器801计算得到合并后第二数字签名的第二哈希值;
处理器801基于智能合约将第二哈希值转换为第二数值;
处理器801根据第二数值得到与多个客户端关联的第二合成随机数;
处理器801将第二合成随机数除以X-1,得到余数为B;
处理器801根据余数B生成第三排序结果,第三排序结果中排列在第一位的为排序后的第二数字签名中第B+1个第一数字签名对应的客户端;
处理器801根据第二排序结果和第三排序结果,生成第四排序结果。其中,第四排序结果中排列在第一位的客户端是根据第二排序结果得到的,第四排序结果中排列在第二位的客户端是根据第三排序结果得到的;
处理器801通过通信接口803将第四排序结果发送至各个客户端。
在一种实现方式中,处理器801根据第二排序结果和第三排序结果,生成第四排序结果,可以包括:处理器801将第二排序结果得到的排序后的第一数字签名中第A+1个第一数字签名对应的客户端作为第四排序结果中的第一位,将第三排序结果得到的排序后的第二数字签名中第B+1个第二数字签名对应的客户端作为第四排序结果的第二位。
请参见图9,图9是本发明实施例提供的一种客户端的结构示意图,所述客户端可以用于图3-图6所示实施例中客户端所执行的步骤,所述客户端90可以包括:
发送模块901:用于将对随机数种子的第一数字签名发送至区块链节点装置,以使区块链节点装置先基于智能合约将各个第一数字签名进行合并,然后计算得到合并后的第一数字签名的第一哈希值,再基于智能合约将第一哈希值转换为第一数值,并根据第一数值得到与多个客户端关联的第一合成随机数;
接收模块902:用于接收来自区块链节点装置的第一合成随机数。
在一种实现方式中,所述客户端90还可以包括:
确定模块903:用于接收来自区块链节点装置排序结果后,基于排序结果确定客户端的排序。
请参见图10,图10是本发明实施例提供的一种客户端的结构示意图,该客户端100包括处理器1001、存储器1002、通信接口1003,所述处理器1001、所述存储器1002、所述通信接口1003通过一条或多条通信总线连接。
处理器1001被配置为支持客户端执行图3-图6所示实施例中客户端相应的功能。该处理器1001可以是中央处理器(central processing unit,CPU),网络处理器(networkprocessor,NP),硬件芯片或者其任意组合。
存储器1002用于存储程序代码等。存储器1002可以包括易失性存储器(volatilememory),例如随机存取存储器(random access memory,RAM);存储器1002也可以包括非易失性存储器(non-volatile memory),例如只读存储器(read-only memory,ROM),快闪存储器(flash memory),硬盘(hard disk drive,HDD)或固态硬盘(solid-state drive,SSD);存储器1002还可以包括上述种类的存储器的组合。
在本发明实施例中,该客户端100包括多个通信接口,其中,用于发送数据的通信接口和用于接收数据的通信接口可以不为同一个通信接口。
处理器1001可以调用存储器1002中存储的程序代码以执行以下操作:
通信接口1003将对随机数种子的第一数字签名发送至区块链节点装置,以使区块链节点装置先基于智能合约将各个第一数字签名进行合并,然后计算得到合并后的第一数字签名的第一哈希值,再基于智能合约将第一哈希值转换为第一数值,并根据第一数值得到与多个客户端关联的第一合成随机数;
通信接口1003接收来自区块链节点装置的第一合成随机数。
在一种实现方式中,通信接口1003接收来自区块链节点装置排序结果;处理器1001基于排序结果确定各个客户端的排序。
本发明实施例还提供一种计算机可读存储介质,可以用于存储图3-图6所示实施例中区块链节点装置所用的计算机软件指令,其包含用于执行上述实施例中为区块链节点装置所设计的程序。
上述计算机可读存储介质包括但不限于快闪存储器、硬盘、固态硬盘。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。

Claims (10)

1.一种随机数生成方法,其特征在于,包括:
接收来自多个客户端的第一数字签名,任一客户端的第一数字签名是所述客户端使用所述客户端的第一私钥对所述客户端的随机数种子进行处理得到的;
基于智能合约将各个所述第一数字签名进行合并,并计算得到合并后的第一数字签名的第一哈希值;
基于所述智能合约将所述第一哈希值转换为第一数值;
根据所述第一数值得到与所述多个客户端关联的第一合成随机数;
将所述第一合成随机数发送至各个所述客户端。
2.根据权利要求1所述的方法,其特征在于,所述根据所述第一数值得到与所述多个客户端关联的第一合成随机数之后,所述方法还包括:
对各个所述第一数字签名进行排序,得到排序后的第一数字签名;
将所述第一合成随机数转换为一个长度为X的数字序列,所述X为所述多个客户端的数量;
基于所述数字序列和所述排序后的第一数字签名生成所述多个客户端的第一排序结果;
将所述多个客户端的第一排序结果发送至各个所述客户端。
3.根据权利要求2所述的方法,其特征在于,所述基于所述数字序列和所述排序后的第一数字签名生成所述多个客户端的第一排序结果,包括:
基于所述数字序列的第N个数值M,确定所述排序后的第一数字签名中第M+1个第一数字签名对应的客户端为第一排序结果中的第N位。
4.根据权利要求1所述的方法,其特征在于,所述根据所述第一数值得到与所述多个客户端关联的第一合成随机数之后,所述方法还包括:
对各个所述第一数字签名进行排序,得到排序后的第一数字签名;
将所述第一合成随机数除以所述X,得到余数为A;
根据所述余数A生成所述第二排序结果,所述第二排序结果中排列在第一位的为所述排序后的第一数字签名中第A+1个第一数字签名对应的客户端;
将所述第二排序结果发送至各个所述客户端。
5.根据权利要求4所述的方法,其特征在于,所述将所述第二排序结果发送至各个所述客户端之前,所述方法还包括:
将各个所述第一数字签名中除所述第A+1个第一数字签名外的第一数字签名作为第二数字签名;
对所述第二数字签名进行排序,得到排序后的第二数字签名;
基于所述智能合约将各个所述第二数字签名进行合并,并计算得到合并后的第二数字签名的第二哈希值;
基于所述智能合约将所述第二哈希值转换为第二数值;
根据所述第二数值得到与所述多个客户端关联的第二合成随机数;
将所述第二合成随机数除以X-1,得到余数为B;
根据所述余数B生成所述第三排序结果,所述第三排序结果中排列在第一位的为所述排序后的第二数字签名中第B+1个第一数字签名对应的客户端;
根据所述第二排序结果和所述第三排序结果,生成第四排序结果,所述第四排序结果中排列在第一位的客户端是根据所述第二排序结果得到的,所述第四排序结果中排列在第二位的客户端是根据所述第三排序结果得到的;
将所述第四排序结果发送至各个所述客户端。
6.根据权利要求5所述的方法,其特征在于,所述根据所述第二排序结果和第三排序结果,生成第四排序结果,包括:
将所述第二排序结果得到的所述排序后的第一数字签名中第A+1个第一数字签名对应的客户端作为第四排序结果中的第一位,将所述第三排序结果得到的所述排序后的第二数字签名中第B+1个第二数字签名对应的客户端作为第四排序结果的第二位。
7.一种随机数生成方法,其特征在于,包括:
将对随机数种子的第一数字签名发送至区块链节点装置,以使所述区块链节点装置基于智能合约将各个所述第一数字签名进行合并,计算得到合并后的第一数字签名的第一哈希值,基于所述智能合约将所述第一哈希值转换为第一数值,并根据所述第一数值得到与所述多个客户端关联的第一合成随机数;
接收来自所述区块链节点装置的所述第一合成随机数。
8.根据权利要求7所述的方法,其特征在于,所述接收来自所述区块链节点装置的所述第一合成随机数,包括:
接收来自所述区块链节点装置的排序结果;
基于所述排序结果确定各个所述客户端的排序。
9.一种区块链节点装置,其特征在于,包括存储器、处理器、输入设备以及输出设备,所述存储器存储一组程序代码,所述处理器调用所述存储器中存储的程序代码,用于执行如权利要求1-6任一项或如权利要求7-8任一项操作。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令当被处理器执行时使所述处理器执行如权利要求1-6任一项所述的方法,或所述程序指令当被处理器执行时使所述处理器执行如权利要求7-8任一项所述的方法。
CN201910922578.5A 2019-09-26 2019-09-26 一种随机数生成方法及装置 Active CN110633071B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910922578.5A CN110633071B (zh) 2019-09-26 2019-09-26 一种随机数生成方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910922578.5A CN110633071B (zh) 2019-09-26 2019-09-26 一种随机数生成方法及装置

Publications (2)

Publication Number Publication Date
CN110633071A true CN110633071A (zh) 2019-12-31
CN110633071B CN110633071B (zh) 2023-09-05

Family

ID=68974548

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910922578.5A Active CN110633071B (zh) 2019-09-26 2019-09-26 一种随机数生成方法及装置

Country Status (1)

Country Link
CN (1) CN110633071B (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112214549A (zh) * 2020-10-10 2021-01-12 中育数据(广州)科技有限公司 一种文件特征码生成方法、装置及电子设备
CN113449342A (zh) * 2020-03-27 2021-09-28 山东浪潮质量链科技有限公司 一种基于区块链的随机数预言机实现方法、设备及介质
CN114090943A (zh) * 2021-11-22 2022-02-25 杭州萝卜智能技术有限公司 基于区间分组的随机摇号及摇号结果验证方法、系统
WO2022068236A1 (zh) * 2020-09-29 2022-04-07 平安科技(深圳)有限公司 基于信息的特征进行信息处理的方法、装置、设备及介质
CN112214549B (zh) * 2020-10-10 2024-06-04 中育数据(广州)科技有限公司 一种文件特征码生成方法、装置及电子设备

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090254572A1 (en) * 2007-01-05 2009-10-08 Redlich Ron M Digital information infrastructure and method
US20140304505A1 (en) * 2013-03-15 2014-10-09 William Johnson Dawson Abstraction layer for default encryption with orthogonal encryption logic session object; and automated authentication, with a method for online litigation
CN110213059A (zh) * 2019-06-20 2019-09-06 腾讯科技(深圳)有限公司 一种随机数的生成方法、生成装置及存储介质
CN110210865A (zh) * 2019-06-17 2019-09-06 北京艾摩瑞策科技有限公司 基于区块链的打包方法及装置

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090254572A1 (en) * 2007-01-05 2009-10-08 Redlich Ron M Digital information infrastructure and method
US20140304505A1 (en) * 2013-03-15 2014-10-09 William Johnson Dawson Abstraction layer for default encryption with orthogonal encryption logic session object; and automated authentication, with a method for online litigation
CN110210865A (zh) * 2019-06-17 2019-09-06 北京艾摩瑞策科技有限公司 基于区块链的打包方法及装置
CN110213059A (zh) * 2019-06-20 2019-09-06 腾讯科技(深圳)有限公司 一种随机数的生成方法、生成装置及存储介质

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113449342A (zh) * 2020-03-27 2021-09-28 山东浪潮质量链科技有限公司 一种基于区块链的随机数预言机实现方法、设备及介质
CN113449342B (zh) * 2020-03-27 2023-04-11 山东浪潮质量链科技有限公司 一种基于区块链的随机数预言机实现方法、设备及介质
WO2022068236A1 (zh) * 2020-09-29 2022-04-07 平安科技(深圳)有限公司 基于信息的特征进行信息处理的方法、装置、设备及介质
CN112214549A (zh) * 2020-10-10 2021-01-12 中育数据(广州)科技有限公司 一种文件特征码生成方法、装置及电子设备
CN112214549B (zh) * 2020-10-10 2024-06-04 中育数据(广州)科技有限公司 一种文件特征码生成方法、装置及电子设备
CN114090943A (zh) * 2021-11-22 2022-02-25 杭州萝卜智能技术有限公司 基于区间分组的随机摇号及摇号结果验证方法、系统

Also Published As

Publication number Publication date
CN110633071B (zh) 2023-09-05

Similar Documents

Publication Publication Date Title
CN110633071B (zh) 一种随机数生成方法及装置
CN110597489B (zh) 一种随机数生成方法、设备及介质
JP4477616B2 (ja) 署名システム及び署名方法
AU2018322507B2 (en) System and method for information protection
CN109672539A (zh) Sm2算法协同签名及解密方法、装置及系统
JP4453996B2 (ja) 通信方法、通信システム、及び、コンピュータ読み取り可能な記録媒体
JP2021515271A (ja) コンピュータにより実施される投票処理およびシステム
CN116204912B (zh) 基于全同态加密的数据处理方法和装置
WO2016153430A1 (en) Method of obfuscating data
CN112219371A (zh) 双向区块链
CN113300846B (zh) 签名方法、终端设备及网络设备
US11616641B2 (en) Computer implemented system and method for sharing a common secret
JPWO2017099117A1 (ja) 事前計算装置、方法、およびコンピュータ読取可能な記録媒体、並びにベクトル乗算装置、および方法
CN112948083B (zh) 数据处理方法、装置及电子设备
CN110990484A (zh) 基于区块链的信息存储方法、系统、计算机设备及存储介质
GB2591693A (en) A block chain-based system for multi-party, multistage process verification
EP3817323A1 (en) Encryption processing system, encryption processing method, and program
CN114154196A (zh) 异构数据处理方法、装置及电子设备
CN107104788A (zh) 终端及其不可抵赖的加密签名方法和装置
CN110585727B (zh) 一种资源获取方法及装置
US20230316241A1 (en) Partitioning a request into transactions for a blockchain
CN111769945A (zh) 基于区块链的拍卖处理方法和区块链节点
CN117795901A (zh) 生成数字签名份额
CN116561791A (zh) 隐私求交方法、装置及存储介质
CN112184440A (zh) 数据处理方法、装置、节点设备及存储介质

Legal Events

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