CN111314069B - 基于区块链的摇号***、方法、电子设备及存储介质 - Google Patents

基于区块链的摇号***、方法、电子设备及存储介质 Download PDF

Info

Publication number
CN111314069B
CN111314069B CN202010089817.6A CN202010089817A CN111314069B CN 111314069 B CN111314069 B CN 111314069B CN 202010089817 A CN202010089817 A CN 202010089817A CN 111314069 B CN111314069 B CN 111314069B
Authority
CN
China
Prior art keywords
shaking
number shaking
key
module
list
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
CN202010089817.6A
Other languages
English (en)
Other versions
CN111314069A (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.)
Wutong Chain Digital Technology Research Institute Suzhou Co ltd
Original Assignee
Suzhou Tongji Blockchain Research Institute 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 Suzhou Tongji Blockchain Research Institute Co ltd filed Critical Suzhou Tongji Blockchain Research Institute Co ltd
Priority to CN202010089817.6A priority Critical patent/CN111314069B/zh
Publication of CN111314069A publication Critical patent/CN111314069A/zh
Application granted granted Critical
Publication of CN111314069B publication Critical patent/CN111314069B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0816Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
    • H04L9/0819Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s)
    • 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/602Providing cryptographic facilities or services
    • 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/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
    • GPHYSICS
    • G07CHECKING-DEVICES
    • G07CTIME OR ATTENDANCE REGISTERS; REGISTERING OR INDICATING THE WORKING OF MACHINES; GENERATING RANDOM NUMBERS; VOTING OR LOTTERY APPARATUS; ARRANGEMENTS, SYSTEMS OR APPARATUS FOR CHECKING NOT PROVIDED FOR ELSEWHERE
    • G07C15/00Generating random numbers; Lottery apparatus
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/04Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
    • H04L63/0428Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/08Network architectures or network communication protocols for network security for authentication of entities
    • H04L63/0876Network architectures or network communication protocols for network security for authentication of entities based on the identity of the terminal or configuration, e.g. MAC address, hardware or software configuration or device fingerprint
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/06Protocols specially adapted for file transfer, e.g. file transfer protocol [FTP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1097Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0861Generation of secret information including derivation or calculation of cryptographic keys or passwords
    • H04L9/0869Generation of secret information including derivation or calculation of cryptographic keys or passwords involving random numbers or seeds

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Health & Medical Sciences (AREA)
  • Computing Systems (AREA)
  • General Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • Power Engineering (AREA)
  • Databases & Information Systems (AREA)
  • Storage Device Security (AREA)

Abstract

本发明提供一种基于区块链的摇号***、方法、电子设备及存储介质,所述摇号***包括区块链核心子***、区块链存证应用子***、摇号业务子***和本地数据库;其中,所述摇号业务子***用于对摇号项目进行自动摇号,生成摇号名单;所述区块链核心子***用于对摇号名单数据进行加密和数字签名;所述区块链存证应用子***将签名后的摇号名单数据上链;所述本地数据库用于以私钥加密的方式存储所述摇号业务子***使用和生成的数据,并根据用户指令导出特定摇号项目的数据。本实施例中的摇号***可以利用区块链技术的不可篡改性、唯一性、透明公开性、共识性将摇号项目信息、摇号结果和人员名单公示,保证了摇号过程中各数据的公开、透明、防篡改。

Description

基于区块链的摇号***、方法、电子设备及存储介质
技术领域
本发明属于区块链技术领域,具体涉及一种基于区块链的摇号***、方法、电子设备及存储介质。
背景技术
目前全国摇号项目种类繁多,主要应用于楼盘摇号、车位摇号、幸运抽奖等各种不同场景,因此摇号可采用的方式也不尽相同。
电子摇号***是利用互联网、计算机、密码学及区块链等技术的一种新型现代化摇号方式,因其部署方式具有携带方便、功能更新成本低、可扩展性强等优势,因而电子摇号***被广泛使用。
但是常见的电子摇号***由于计算机安全、数据泄露、人为操作等结果无法验证,摇出的号码为连续号码不够随机等原因,无法得到大众的充分信任,因此现有技术中的电子摇号***存在以下技术问题:
1、摇号名单数据、过程、结果易被篡改,无法对数据是否被篡改过给出证据;
2、摇号涉及的人员隐私或敏感信息从录入到公示,无法得到相对完备地保护;
3、摇号过程不透明,致使摇号环节的人为操作、软件固有行为都不能自证;
4、摇号易摇出连续号码,不够随机,无法得到大众的充分信任;
5、摇号结果公示时,无法确保数据是否被篡改;
6、联网摇号情况下,不能保证网络的可靠性。
发明内容
本发明实施例提供一种基于区块链的摇号***、方法、电子设备及存储介质,以至少解决现有技术中的一个技术问题。
第一方面,本发明实施例提供一种基于区块链的摇号***,该摇号***包括区块链核心子***、区块链存证应用子***、摇号业务子***和本地数据库;其中,
所述摇号业务子***用于对摇号项目进行自动摇号,生成摇号名单;
所述区块链核心子***用于对摇号名单数据进行加密和数字签名;
所述区块链存证应用子***将签名后的摇号名单数据上链;
所述本地数据库用于以私钥加密的方式存储所述摇号业务子***使用和生成的数据,并根据用户指令导出特定摇号项目的数据。
进一步的,所述区块链核心子***还包括密钥管理模块,所述密钥管理模块根据用户输入的密码,对用户的私钥和用户信息进行加密以生成密文,并导出包含该密文的第一密钥文件。
进一步的,所述区块链核心子***还包括共识服务模块和数字签名模块;
所述共识服务模块用于对摇号名单数据进行验证和确认;
所述数字签名模块用于对摇号名单数据进行加密和数字签名。
进一步的,所述区块链存证应用子***包括上链模块和导出模块;其中,
所述上链模块用于将所述摇号业务子***生成的摇号名单数据上链;
所述导出模块用于根据用户请求从区块链节点获取并导出特定项目的数据。
进一步的,所述摇号业务子***包括管理员模块、用户登录模块和摇号项目模块;其中,
所述管理员模块用于配置用户信息,以及生成主密钥和多个子密钥;
所述用户登录模块用于验证用户输入的子密钥并在验证成功后进入摇号项目模块;;
所述摇号项目模块用于导入摇号名单并验证签名,以及在验证成功后根据摇号规则进行自动摇号,并将摇号项目信息及摇号结果发送给所述区块链存证应用子***。
进一步的,所述管理员模块包括第一密钥验证子模块和密钥分发子模块;其中,
所述第一密钥验证子模块用于接收管理员输入的密码和第一密钥文件,并使用管理员输入的密码验证该第一密钥文件,在验证成功后将管理员信息存储到所述本地数据库中;
所述密钥分发子模块用于生成主密钥和多个子密钥,并利用所述主密钥和多个子密钥生成第二密钥文件。
进一步的,所述用户登录模块包括第二密钥验证子模块和名单验证子模块;其中,
所述第二密钥验证子模块用于接收用户输入的多个子密钥,验证所述多个子密钥是否能恢复出主密钥,并采用恢复出的主密钥对第二密钥文件进行解密和验证以获得私钥,判断所述私钥是否能够连接本地数据库,若是,则表明密钥验证成功;
所述名单验证子模块用于对所述摇号名单的哈希值和签名进行验证。
进一步的,所述摇号项目模块包括摇号子模块和统计子模块;其中,
所述摇号子模块用于根据多个外部随机数选择随机算法进行摇号,并将摇号产生的摇号名单以及摇号项目信息上链;
所述统计子模块对所述摇号项目信息及摇号名单进行统计。
进一步的,所述多个外部随机数是由用户选择的外部随机数生成方法产生的。
进一步的,所述摇号子模块包括通过执行以下操作来选择所述随机算法:
采用哈希算法分别对所述多个外部随机数进行计算获得各个外部随机数的哈希值;
根据各个外部随机数的哈希值的字节构造新的哈希值;
对构造出的新的哈希值进行异或操作获得初始随机数种子;
根据初始随机数种子和摇号***内置随机数生成算法数量选取所述随机算法。
进一步的,所述区块链存证应用子***还用于接收用户关于公示摇号结果的指令:
若用户指令公示摇号结果,则同时将未加密的摇号名单和加密后的摇号名单数据上链;
若用户指令不公示摇号结果,则仅将加密后的摇号名单数据上链。
进一步的,所述区块链存证应用子***还将存证详情的地址链接生成二维码图片并展示给用户。
第二方面,本发明实施例提供一种基于区块链的摇号方法,该摇号方法包括以下步骤:
对摇号项目进行自动摇号,生成摇号名单;
对摇号名单数据进行加密和数字签名;
将签名后的摇号名单数据上链;
以私钥加密的方式存储所述摇号业务子***使用和生成的数据,并根据用户指令导出特定摇号项目的数据。
第三方面,本发明实施例提供一种电子设备包括:处理器和存储装置;所述存储装置上存储有计算机程序,所述处理器执行所述存储装置上的计算机程序时实现上述发明任一项所述的摇号方法。
第四方面,本发明实施例提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序在被处理器执行时实现上述发明任一项所述的摇号方法。
本发明的摇号***可以利用区块链技术的不可篡改性、唯一性、透明公开性、共识性将摇号项目信息、摇号结果和人员名单公示,保证了摇号过程中各数据的公开、透明、防篡改。
附图说明
图1为本发明实施例提供的一种基于区块链的摇号***的结构示意图;
图2为本发明实施例提供的一种基于区块链的摇号***的框架示意图;
图3为本发明实施例提供的一种基于区块链的摇号方法的具体应用示意图;
图4为本发明实施例提供的一种基于区块链的摇号方法的流程示意图;
图5为本发明的一种电子设备的一个实施例的结构示意图。
具体实施方式
下面结合附图所示的各实施方式对本发明进行详细说明,但应当说明的是,这些实施方式并非对本发明的限制,本领域普通技术人员根据这些实施方式所作的功能、方法、或者结构上的等效变换或替代,均属于本发明的保护范围之内。
为了便于理解具体实施方式中的相关术语,下面首先对下文中出现的相关术语进行简要说明。
“fs模块”用于对***文件及目录进行读写操作。
json是一个非常轻量级的方法,可以用来把JavaScript对象和字符串的形式进行相互转换。
AES(Advanced Encryption Standard高级加密标准)是一种对称加密算法,或称分组对称加密算法。
CBC(Cipher Block Chaining)为密码分组链接模式。
bcrypt,是一个跨平台的文件加密工具。由它加密的文件可在所有支持的操作***和处理器上进行转移。
sqlite数据库,一款轻型的,遵守ACID的关系型数据库管理***,它包含在一个相对小的C库中。
实施例一基于区块链的摇号***
图1为本发明实施例提供的一种基于区块链的摇号***的结构示意图;参见图1,
一种基于区块链的摇号***,所述摇号***包括区块链核心子***、区块链存证应用子***、摇号业务子***和本地数据库;其中,
所述摇号业务子***用于对摇号项目进行自动摇号,生成摇号名单;
所述区块链核心子***用于对摇号名单数据进行加密和数字签名;
所述区块链存证应用子***将签名后的摇号名单数据上链;
所述本地数据库用于以私钥加密的方式存储所述摇号业务子***使用和生成的数据,并根据用户指令导出特定摇号项目的数据。
参见图2,图2为本发明实施例提供的一种基于区块链的摇号***的框架示意图;其中,该摇号***的前端可采用react,后端可采用cefsharp+winform桌面应用框架;且该摇号***可采用sqlite本地数据库。
下面将分别描述本实施例中的基于区块链的摇号***的各个子***的具体结构及工作过程。
在本实施例中,上述区块链核心子***包括共识服务模块、密钥管理模块和数字签名模块;
其中,所述共识服务模块用于对摇号名单数据进行验证和确认。
所述密钥管理模块对接收的密码进行加密以生成密文并导出包含该密文的密钥文件;具体的,所述密钥管理模块根据用户输入的密码并采用加密算法对用户的私钥及用户信息进行加密以生成密文、将密文保存至密钥文件中并导出该密钥文件;优选的,密钥管理模块(例如可以是公私钥对模块)可以采用AES-128-CBC、MD5等加密算法对用户的私钥及用户信息进行加密生成所述密文;
所述数字签名模块用于对摇号名单数据进行加密和数字签名。
上述区块链存证应用子***包括上链模块和导出模块;所述上链模块用于将所述摇号业务子***所需的摇号名单数据上链;具体的,后台服务器对名单数据进行校验;校验成功后,密钥管理模块将名单数据进行加密并生成哈希值;数字加密模块利用私钥对所述哈希值完成签名生成签名数据;上链模块将名单数据、哈希值和签名数据进行上链;
在一个实施例中,后台服务器可以是node后端,该node后端利用Excel.Workbook校验名单数据;其中,名单数据的编号列不为空且不能是重复的;校验成功后密钥管理模块可利用SHA256等方法将名单数据进行加密并生成哈希值;数字签名模块利用私钥并可通过SM2等方法将哈希值完成签名生成签名数据;上链模块将所述名单数据、哈希值和签名数据进行上链;例如上链模块可以向区块链节点发出上链请求,区块链接收所述上链请求后将数据添加至区块链节点以完成上链;
所述导出模块用于所述导出模块用于根据用户请求从区块链节点获取并导出特定项目的摇号名单数据;具体的,导出模块向区块链区块链存证应用子***发出获取名单数据的请求,区块链根据该请求返回所述摇号名单数据,所述导出模块用于根据所述摇号名单数据导出所述摇号名单;在一个实施例中,后端node可以向区块链存证应用子***发出获取摇号名单数据的请求,区块链存证应用子***根据该请求返回摇号名单数据,后端node中的“fs模块”可将该摇号名单数据写入json文件中并导出所述摇号名单。
需要说明的是,上述实施例中的公、私钥可以利用国密算法(GMSM,一套数据加密处理系列算法)生成。
上述摇号业务子***包括管理员模块、用户登录模块和摇号项目模块;其中,
所述管理员模块用于配置用户信息,以及生成主密钥和多个子密钥;在一个实施例中,所述管理员模块根据登录密码和密钥文件配置用户信息(例如学校信息、楼盘信息等)和公证员信息,并向用户分发密钥。
具体的,所述管理员模块包括第一密钥验证子模块和密钥分发子模块;其中,
所述第一密钥验证子模块用于接收管理员输入的密码和第一密钥文件,并使用管理员输入的密码验证该第一密钥文件,在验证成功后将管理员信息存储到所述本地数据库中;具体的,该第一密钥验证子模块根据接收的管理员输入的密码并利用AES-128-CBC算法对第一密钥文件解密;Bcrypt库验证解密后的第一密钥文件内容;验证成功后,密钥管理模块(例如私钥)对sqlite数据库进行加密;进一步的,在验证成功后将管理员信息存储到所述本地sqlite数据库;
所述密钥分发子模块用于生成主密钥和多个子密钥,并利用所述主密钥和多个子密钥生成所述第二密钥文件;具体的,所述第二密钥文件是通过以下操作获得的:密钥分发子模块将后台服务器生成的随机数作为主密钥,并将该主密钥分成多个子密钥,并利用所述主密钥和多个子密钥生成所述第二密钥文件;
具体的,后台服务器可生成一个随机数,该密钥分发子模块执行以下操作以生成所述第二密钥文件:
所述密钥分发子模块将该随机数作为主密钥、采用密码学算法将主密钥分成n个子密钥利用主密钥加密私钥生成所述第二密钥文件;进一步的,可以将所述第二密钥文件保存至程序主目录下,这里的第二密钥文件可供公证员进行验证,其中,子密钥的数量与公证员的数量相同。
本实施例中可以利用拉格朗日插值法和门限密钥共享算法将主密钥分成n个子密钥。
利用拉格朗日插值法和射影几何理论分布的(t,n)门限密钥共享算法,实现了将密钥分发给多个公证员的功能。每个公证员的密钥为一个子密钥,当子密钥的数量大于预设的阈值时恢复所述主密钥,可有效地防止因权力过分集中而导致的职权滥用,且可通过增加或减少子密钥来保证密钥的安全性和完整性。
具体的,公证员(至少两名)可执各自的子密钥通过该管理员模块进行登录,对所述子密钥进行验证,在验证通过后进入所述摇号项目模块。
所述用户登录模块用于验证用户输入的子密钥并在验证成功后进入摇号项目模块;该用户登录模块包括第二密钥验证子模块和名单验证子模块;其中,
所述第二密钥验证子模块用于接收用户输入的多个子密钥,验证所述多个子密钥是否能恢复出主密钥,并采用恢复出的主密钥对第二密钥文件进行解密和验证以获得私钥,判断所述私钥是否能够连接本地数据库,若是,则表明密钥验证成功;
所述名单验证子模块用于对所述摇号名单的哈希值和签名进行验证。
具体的,所述第二密钥验证子模块用于验证所述子密钥是否能恢复出所述主密钥可包括以下操作:
所述第二密钥验证子模块采用多项式插值方法(门限密钥共享体制)并利用至少两个子密钥验证是否能恢复出所述主密钥,若是,则采用恢复出的主密钥可利用AES-128-CBC对第二密钥文件解密并利用Bcrypt库验证所述第二密钥文件以获得该私钥,判断所述私钥是否能够连接本地数据库,若是,则表明密钥验证成功(即用户登录模块能利用该子密钥登录所述摇号***,那么公证员登录该摇号***成功);
所述名单验证子模块通过执行以下子操作对所述摇号名单的哈希值和签名进行验证:
加密摇号名单中的名单数据获得第一哈希值,例如可以利用SHA256算法加密摇号名单中的名单数据获得所述第一哈希值;
比较所述第一哈希值是否等于所述摇号名单的哈希值,若是,则利用私钥获得公钥,再利用公钥及SM3算法验证摇号名单的签名是否一致,若摇号名单的签名一致,则摇号名单验证通过。
所述摇号项目模块用于导入摇号名单并验证签名,以及在验证成功后设置摇号项目信息和摇号规则,创建摇号项目;并根据摇号规则进行自动摇号以摇号项目信息及摇号结果发送给所述区块链存证应用子***。
本实施例中的摇号项目模块包括摇号子模块和统计子模块;其中,
首先可以设置该摇号***的摇号项目信息、导入摇号名单和设置摇号规则;
所述摇号子模块根据所述多个外部随机数选择随机算法,利用所选择的随机算法随机抽取所述摇号名单并将摇号产生的摇号结果名单以及摇号项目信息上链;其中,多个所述外部随机数是由用户选择的外部随机数生成方法产生的;
具体的,后台服务器生成随机数;摇号子模块引入该随机数并抽取摇号名单中的号码进行摇号;在摇号结束后,摇号子模块在连网状态下将摇号产生的摇号名单以及摇号项目信息上链;
所述统计子模块对所述摇号项目信息及摇号名单进行统计;进一步,统计子模块将所述摇号项目信息及摇号名单传输至摇号显示界面,该摇号显示界面可查看摇号项目信息、导出摇号项目的图片或excel文件等,利用该摇号项目信息及摇号名单还可追溯证明单,扫描二维码或通过存证哈希查看存证详情。
下面将具体说明上述摇号子模块产生随机数,并根据该随机数选择随机算法进行摇号,并将摇号产生的摇号名单以及摇号项目信息上链的具体工作过程。
在一个实施例中,摇号子模块产生随机数包括执行以下操作:
所述摇号子模块利用用户选择的随机数生成方法自动产生多个外部随机数,并根据所述多个外部随机数选择随机算法,利用所选择的随机算法随机抽取所述摇号名单;例如摇号子模块可利用三种随机数生成方法获得两个随机数;需要说明的是,所述随机数生成方法可大于等于三种,例如可以手绘涂鸦、手动输入或该测试子模块自动生成随机数等;所述的手绘涂鸦即所述公证员在显示界面上随机画出至少2笔,每笔至少2个参照网格长度的图;
所述摇号子模块利用哈希算法将手绘图片的内容生成第一随机数,利用SHA256算法生成所述第一随机数;所述摇号子模块还利用摇号***自动生成随机数方法生成第二随机数。
所述的手动输入即公证员随机输入第一随机数和第二随机数;
所述的摇号子模块自动生成随机数即可以利用RNGCryptoServiceProvider(一种C#语言的生成随机数方法)生成第一随机数和第二随机数,该第一随机数和第二随机数均可以为强随机字符串。
本实施例中,所述摇号子模块包括通过执行以下操作来选择所述随机算法:
采用哈希算法分别对多个所述外部随机数进行计算获得各个外部随机数的哈希值;例如可以采用sha256哈希算法分别对所述第一随机数和第二随机数进行计算,获得哈希值S、T;
根据各个外部随机数的哈希值的字节构造新的哈希值;例如,可以分别取哈希值S、T的前8字节和后8字节构造一个无符号的16位整数,从而构造出新的哈希值S'和T';
对构造出的新的哈希值进行异或操作获得初始随机数种子;例如,可对数S'和T'执行异或操作以获得初始随机数种子U;
根据初始随机数种子和摇号***内置随机数生成算法数量执行取余操作选取所述随机算法;例如,可以对初始随机数种子U和摇号***内置随机数生成算法数量执行取余操作得出最终的可以选取的随机算法。
本实施例可利用所述外部的第一随机数和第二随机数来选择该摇号***选取哪种随机算法,下面将分别介绍两种随机算法随机抽取所述摇号名单的过程,这两种随机算法可定义为第一随机算法、第二随机算法;需要说明的是,在其他实施例中,也可以选取其他随机算法来抽取所述摇号名单。
第一随机算法:
1.设摇号池的集合为List,总数为P,前一次最终随机数为U';
2.开始第一次摇号时,将前一次最终随机数U'设置为初始随机数种子,其中,U'=U;
3.执行摇号操作,调用***随机数生成算法得到长度为64位的随机数R;
4.如果R=U’或R的64位数全为0或1,则跳转至步骤3;
5.计算最终随机数X=U'XOR R;
6.计算位置索引i=X MOD P;
7.选取单次摇号结果Z=List[i];
8.赋值U'=X,P=P-1;
9.从摇号池集合中移除第[**i**]位,并将第[**i**]位后的数据依次按序向前移动;
10.跳转至步骤3,直至满足摇号结束条件。
第二随机算法:
1.设摇号池集合为List,总数为P,前一次最终随机数为U';
2.开始第一次摇号时,将前一次最终随机数U'设置为初始随机数种子,U'=U;
3.执行摇号操作,调用***随机数生成算法得到长度为64位的随机数R;
4.如果R==U'或R的64位数全为0或1,则跳转至步骤3;
5.计算临时结果R'=U'XOR R;
6.取R的高32位和R'的低32位组合成最终随机数X=(R>>32&0xFFFFFFFF)
<<32|(R'&0xFFFFFFFF);
7.计算位置索引i=X MOD P;
8.选取单次摇号结果Z=List[i];
9.赋值U'=X,P=P-1;
10.从摇号池集合中移除第[**i**]位,并将第[**i**]位后的数据依次按序向前移动;
11.跳转至步骤3,直至满足摇号结束条件。
本实施例中,所述区块链存证应用子***还用于接收用户关于公示摇号结果的指令:
若用户指令公示摇号结果,则同时将未加密的摇号名单和加密后的摇号名单数据上链;
若用户指令不公示摇号结果,则则仅将加密后的摇号名单数据上链;具体的,区块链存证应用子***可以向区块链节点发出上链请求,区块链接收该上链请求后将加密后的项目信息及摇号结果的密文数据添加至区块链节点。
本实施例中的所述统计子模块对所述摇号项目信息及摇号名单进行统计包括以下一种或多种操作:
导出图片或excel文件:从本地数据库中查找该摇号项目数据,将该摇号项目数据利用前端的dom-to-image插件导出图片,利用后端的HSSFWorkbook及FileStream库导出excel文件;
利用二维码访问网络地址:将存证详情的地址url利用后端的QRCoder库生成二维码图片供前端展示,用户通过扫描二维码访问地址url;
数据存储:将该摇号***中的所有数据都保存至用私钥加密的本地sqlite数据库中。
图3为本发明实施例提供的一种基于区块链的摇号方法的具体应用示意图;参见图3,该摇号业务子***的工作过程如下:
(1)接收注册账户信息;
(2)接收用户提交的服务申请并验证注册账户信息,用户等待申请通过;
(3)接收设置的密码并利用加密数据将相关摇号名单数据导出第一密钥文件,该第一密钥文件可供摇号***的管理员登录;
(4)接收用户上传的摇号名单并利用私钥签名导出摇号候选名单,所述摇号候选名单可供设置摇号项目;其中,所述私钥签名是数字签名模块用私钥通过SM3等方式生成的;
(5)接收第一密钥文件和登录指令登录该摇号***,该摇号***验证所述第一密钥文件及登录指令(例如***管理员的密码),若验证通过,则进入该摇号***;若验证不通过,则无法进入该摇号***;
(6)根据所述登录指令和第一密钥文件生成配置信息,所述配置信息包括用户信息和公证员信息;优选的,根据所述登录指令和第一密钥文件并利用门限密钥共享算法生成所述子密钥;
(7)接收子密钥登录该摇号***,公证员可通过***管理员配置的子密钥登录该摇号***,只有在至少两位公证员同时登录摇号***并利用门限密钥共享算法验证通过后可进入该摇号***;
(8)公证员可设置摇号项目、配置项目信息、导入摇号名单、设置摇号规则,并利用所述公私钥验证摇号名单;
(9)公证员可引入外部随机数,本实施例中的引入外部随机数例如可包括以下几种方式:摇号***自动生成、手绘涂鸦、手动输入等。
(10)公证员可开始测试或正式摇号,在摇号过程可利用双重随机算法随机抽取摇号名单号码;摇号结束后,若***在区块链网络联通的状态下将摇号结果及摇号项目信息上链至区块链存证应用子***,区块链存证应用模块存储接收到的各个数据,这里的各个数据包括摇号结果及摇号项目信息、摇号名单数据、摇号项目信息、公证员信息、随机数的生成记录等,若摇号***不在区块链网络联通的状态下,则***不会将摇号项目信息及摇号结果上链。
(11)公证员可通过显示界面的统计结果查看统计数据并导出摇号结果,例如可以利用图片、excel等格式导出所述摇号结果,也可对未上链的数据在区块链网络联通的状态下重新上链。
(12)公证员还可根据追溯证明单查看摇号项目信息,所述摇号项目信息包括:摇号结果及信息、名单数据、项目信息、公证员信息、随机数的生成记录等;
(13)通过二维码、交易哈希的方式至所述区块链存证应用子***查询、查看、校验摇号***所产生的全部数据,这里的摇号***所产生的全部数据全流程数据包括摇号名单、摇号结果、摇号项目信息。
由于区块链是一种按照时间顺序将数据区块以顺序相连的方式组合成的一种链式数据结构,并以密码学方式保存的不可篡改和不可伪造的分布式账本。因此,本实施例中的摇号***可以利用区块链技术的不可篡改性、唯一性、透明公开性、共识性将摇号项目信息、摇号结果和人员名单公示,保证了摇号过程中各数据的公开、透明、防篡改。
实施例二
图4为本发明实施例提供的一种基于区块链的摇号方法的流程示意图;参见图4,该摇号方法包括以下步骤:
对摇号项目进行自动摇号,生成摇号名单;
对摇号名单数据进行加密和数字签名;
将签名后的摇号名单数据上链;
在本地数据库中以私钥加密的方式存储所述摇号过程中使用和生成的数据,并根据用户指令导出特定摇号项目的数据。
本实施例中的摇号方法与上述实施例一的摇号***的工作过程基本一致,在此不再赘述。
实施例三电子设备
图5为本发明的一种电子设备的一个实施例的结构示意图,参见图5,在本实施例中,提供一种电子设备,包括但不限于智能手机、固定电话、平板电脑、笔记本电脑、穿戴式设备等电子设备,所述电子设备包括:处理器和存储器,所述存储器存储有计算机可读指令,所述计算机可读指令在被所述处理器执行时实现上述本发明的摇号方法。
实施例四计算机可读存储介质
在本实施例中,提供一种计算机可读存储介质,可以为ROM(例如只读存储器、FLASH存储器、转移装置等)、光学存储介质(例如,CD-ROM、DVD-ROM、纸卡等)、磁存储介质(例如,磁带、磁盘驱动器等)或其他类型的程序存储器;所述计算机可读存储介质上存储有计算机程序,所述计算机程序在被处理器或计算机运行时执行上述本发明的摇号方法。
综上所述,本发明具有以下优点:
本发明中的摇号名单、摇号项目信息及结果利用区块链的特性和加密将摇号过程中的数据进行公示,确保了摇号名单数据公开、透明、不会被篡改;
本发明能够利用加密及用户验证保证摇号***使用安全,人员隐私信息也能得到完备地保护;
本发明能够实现操作全程脱机,保证无网络安全隐患和潜在风险;
本发明能够实现引入无法预知的外部随机数及随机算法,保证结果无法预知和操控,最大限度减小人为因素影响,大幅提升摇号的信任度;
本发明在摇号业务产生的所有数据存储于加密的数据库中,保证数据安全。
本领域普通技术人员可以意识到,结合本发明实施例中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
在本申请所提供的实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。

Claims (11)

1.一种基于区块链的摇号***,所述摇号***包括区块链核心子***、区块链存证应用子***、摇号业务子***和本地数据库;其中,
所述摇号业务子***用于对摇号项目进行自动摇号,生成摇号名单;
所述区块链核心子***用于对摇号名单数据进行加密和数字签名;
所述区块链存证应用子***用于将签名后的摇号名单数据上链;
所述本地数据库用于以私钥加密的方式存储所述摇号业务子***使用和生成的数据,并根据用户指令导出特定摇号项目的数据;
其中,所述摇号业务子***包括管理员模块、用户登录模块和摇号项目模块;
所述管理员模块用于配置用户信息,以及生成主密钥和多个子密钥;所述管理员模块包括第一密钥验证子模块和密钥分发子模块;其中,所述第一密钥验证子模块用于接收管理员输入的密码和第一密钥文件,并使用管理员输入的密码验证该第一密钥文件,在验证成功后将管理员信息存储到所述本地数据库中;所述密钥分发子模块用于生成主密钥和多个子密钥,并利用所述主密钥和多个子密钥生成第二密钥文件;
所述用户登录模块用于验证用户输入的子密钥并在验证成功后进入摇号项目模块;所述用户登录模块包括第二密钥验证子模块和名单验证子模块;其中,所述第二密钥验证子模块用于接收用户输入的多个子密钥,验证所述多个子密钥是否能恢复出主密钥,并采用恢复出的主密钥对第二密钥文件进行解密和验证以获得私钥,判断所述私钥是否能够连接本地数据库,若是,则表明密钥验证成功;所述名单验证子模块用于对所述摇号名单的哈希值和签名进行验证;
所述摇号项目模块用于导入摇号名单并验证签名,以及在验证成功后根据摇号规则进行自动摇号,并将摇号项目信息及摇号结果发送给所述区块链存证应用子***;
所述摇号项目模块包括摇号子模块和统计子模块;其中,
所述摇号子模块用于根据多个外部随机数选择随机算法进行摇号,并将摇号产生的摇号名单以及摇号项目信息上链;
所述统计子模块对所述摇号项目信息及摇号名单进行统计;
所述区块链存证应用子***还用于存储接收到的摇号结果、摇号项目信息和随机数的生成记录。
2.根据权利要求1所述的摇号***,其特征在于:所述区块链核心子***还包括密钥管理模块,所述密钥管理模块根据用户输入的密码对用户的私钥和用户信息进行加密以生成密文,并导出包含该密文的第一密钥文件。
3.根据权利要求2所述的摇号***,其特征在于:所述区块链核心子***还包括共识服务模块和数字签名模块;
所述共识服务模块用于对摇号名单数据进行验证和确认;
所述数字签名模块用于对摇号名单数据进行加密和数字签名。
4.根据权利要求1所述的摇号***,其特征在于:所述区块链存证应用子***包括上链模块和导出模块;其中,
所述上链模块用于将所述摇号业务子***生成的摇号名单数据上链;
所述导出模块用于根据用户请求从区块链节点获取并导出特定摇号项目数据。
5.根据权利要求1所述的摇号***,其特征在于:
所述多个外部随机数是由用户选择的外部随机数生成方法产生的。
6.根据权利要求5所述的摇号***,其特征在于,所述摇号子模块包括通过执行以下操作来选择所述随机算法:
采用哈希算法分别对所述多个外部随机数进行计算获得各个外部随机数的哈希值;
根据各个外部随机数的哈希值的字节构造新的哈希值;
对构造出的新的哈希值进行异或操作获得初始随机数种子;
根据初始随机数种子和摇号***内置随机数生成算法数量选取所述随机算法。
7.根据权利要求1所述的摇号***,其特征在于,所述区块链存证应用子***还用于接收用户关于公示摇号结果的指令:
若用户指令公示摇号结果,则同时将未加密的摇号名单和加密后的摇号名单数据上链;
若用户指令不公示摇号结果,则仅将加密后的摇号名单数据上链。
8.根据权利要求1所述的摇号***,其特征在于,所述区块链存证应用子***还将存证详情的地址链接生成二维码图片并展示给用户。
9.一种采用如权利要求1所述基于区块链的摇号***的摇号方法,其特征在于,所述摇号方法包括以下步骤:
对摇号项目进行自动摇号,生成摇号名单;
对摇号名单数据进行加密和数字签名;
将签名后的摇号名单数据上链;
在本地数据库中以私钥加密的方式存储所述摇号过程中使用和生成的数据,并根据用户指令导出特定摇号项目的数据;
其中,还包括以下步骤:
接收设置的密码并利用加密数据将相关摇号名单数据导出第一密钥文件;
接收第一密钥文件和登录指令登录该摇号***,该摇号***验证所述第一密钥文件及登录指令,若验证通过,则进入该摇号***;若验证不通过,则无法进入该摇号***;
根据所述登录指令和第一密钥文件生成配置信息,所述配置信息包括用户信息和公证员信息;
接收子密钥登录该摇号***,公证员通过***管理员配置的子密钥登录该摇号***,只有在至少两位公证员同时登录摇号***并利用门限密钥共享算法验证通过后进入该摇号***;
公证员设置摇号项目、配置项目信息、导入摇号名单、设置摇号规则,并利用公私钥验证摇号名单;
公证员引入外部随机数;
公证员开始测试或正式摇号,在摇号过程利用双重随机算法随机抽取摇号名单号码,若***在区块链网络联通的状态下将摇号结果及摇号项目信息上链至区块链存证应用子***;区块链存证应用子***存储接收到的摇号结果、摇号项目信息和随机数的生成记录。
10.一种电子设备,其特征在于,包括:处理器和存储器,所述存储器存储有计算机可读指令,所述计算机可读指令在被所述处理器执行时实现根据权利要求9所述的摇号方法。
11.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序在被处理器或计算机运行时执行根据权利要求9所述的摇号方法。
CN202010089817.6A 2020-02-13 2020-02-13 基于区块链的摇号***、方法、电子设备及存储介质 Active CN111314069B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010089817.6A CN111314069B (zh) 2020-02-13 2020-02-13 基于区块链的摇号***、方法、电子设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010089817.6A CN111314069B (zh) 2020-02-13 2020-02-13 基于区块链的摇号***、方法、电子设备及存储介质

Publications (2)

Publication Number Publication Date
CN111314069A CN111314069A (zh) 2020-06-19
CN111314069B true CN111314069B (zh) 2022-08-30

Family

ID=71161662

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010089817.6A Active CN111314069B (zh) 2020-02-13 2020-02-13 基于区块链的摇号***、方法、电子设备及存储介质

Country Status (1)

Country Link
CN (1) CN111314069B (zh)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111884807B (zh) * 2020-07-13 2021-10-26 腾讯科技(深圳)有限公司 基于区块链的物品预约方法、装置、设备以及介质
CN111865587B (zh) * 2020-08-07 2021-08-31 腾讯科技(深圳)有限公司 数据处理方法、区块链节点设备、电子设备及计算机程序
CN112216013A (zh) * 2020-08-31 2021-01-12 北京好扑信息科技有限公司 一种基于区块链随机数技术的通用摇号***设计及其方法
CN112383407B (zh) * 2020-09-22 2023-05-12 法信公证云(厦门)科技有限公司 一种基于区块链的在线公证全流程日志处理方法及***
CN112418856A (zh) * 2020-11-25 2021-02-26 政采云有限公司 一种摇号方法、装置、区块链、设备及计算机存储介质
CN112714135B (zh) * 2021-01-20 2023-05-02 杭州安存网络科技有限公司 基于区块链的活动管理方法
CN114170722A (zh) * 2021-12-14 2022-03-11 杨宁波 一种基于链上随机数的选房摇号方法
CN114726534A (zh) * 2022-03-28 2022-07-08 海南格子山网络科技有限公司 一种基于Solana区块链技术实现智能合约抽签的方法

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110247923A (zh) * 2019-06-24 2019-09-17 北京艾摩瑞策科技有限公司 基于区块链的摇号数据上链方法及其设备
CN110263529A (zh) * 2019-06-24 2019-09-20 北京艾摩瑞策科技有限公司 应用智能合约的摇号数据上链方法及其设备
CN110247918A (zh) * 2019-06-24 2019-09-17 北京艾摩瑞策科技有限公司 应用于区块链的摇号数据上链方法及其设备
CN110784315B (zh) * 2019-10-26 2023-08-18 深圳市合西科技有限公司 基于区块链的摇号方法、装置、计算机设备及存储介质

Also Published As

Publication number Publication date
CN111314069A (zh) 2020-06-19

Similar Documents

Publication Publication Date Title
CN111314069B (zh) 基于区块链的摇号***、方法、电子设备及存储介质
US11516201B2 (en) Encryption and decryption techniques using shuffle function
US9077537B2 (en) Generating secure private keys for use in a public key communications environment
US8386793B2 (en) Method and apparatus for implementing electronic seal
CN110324143A (zh) 数据传输方法、电子设备及存储介质
CN108154365B (zh) 一种生成动态二维码的安全设备、方法及***
CN109074434A (zh) 使用分布式散列表和点对点分布式分类账验证数字资产所有权的方法和***
CN106372499A (zh) 用于安全保护虚拟机计算环境的***和方法
CN101145911B (zh) 具有私密保护及口令找回功能的身份认证方法
CN111476573B (zh) 一种账户数据处理方法、装置、设备及存储介质
CN103095452A (zh) 需要采用穷举法解密的随机加密方法
CN111512590A (zh) 用于密码认证的同态加密
CN108075888A (zh) 动态url生成方法及装置
CN109005196A (zh) 数据传输方法、数据解密方法、装置及电子设备
Yu et al. Veridedup: A verifiable cloud data deduplication scheme with integrity and duplication proof
CN111241492A (zh) 一种产品多租户安全授信方法、***及电子设备
CN108768938B (zh) 一种网页数据加解密方法及装置
CN117235342A (zh) 基于同态哈希函数和虚拟索引的动态云审计方法
CN114513316B (zh) 一种基于身份的匿名认证方法、服务器及用户终端设备
Soman et al. Secure storage and sharing of visitor images generated by smart entrance on public cloud
CN111130788B (zh) 数据处理方法和***、数据读取方法和iSCSI服务器
CN110740112B (zh) 认证方法、装置和计算机可读存储介质
CN109862008B (zh) 密钥恢复方法和装置、电子设备及存储介质
CN112019335A (zh) 一种基于sm2算法的多方协同加解密方法及装置、***、介质
KR20080109707A (ko) 데이터 분산 저장을 위한 난수 기반 혼합 및 반복 추출 분할 방법

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
CP01 Change in the name or title of a patent holder

Address after: 11-12 / F, Lingyu Business Plaza, 66 qinglonggang Road, high speed rail new town, Xiangcheng District, Suzhou City, Jiangsu Province

Patentee after: Wutong Chain Digital Technology Research Institute (Suzhou) Co.,Ltd.

Address before: 11-12 / F, Lingyu Business Plaza, 66 qinglonggang Road, high speed rail new town, Xiangcheng District, Suzhou City, Jiangsu Province

Patentee before: SUZHOU TONGJI BLOCKCHAIN RESEARCH INSTITUTE Co.,Ltd.

CP01 Change in the name or title of a patent holder