一种基于区块链大量生成私钥的方法及装置与流程

文档序号:11778160阅读:973来源:国知局
一种基于区块链大量生成私钥的方法及装置与流程

本发明涉及区块链技术领域,特别涉及一种基于区块链大量生成私钥的方法及装置。



背景技术:

数字货币简称为digiccy,是英文的“digitalcurrency”的缩写。数字货币是电子货币形式的替代货币,数字金币和密码货币都属于数字货币。数字货币不能完全等同于虚拟世界中的虚拟货币,因为它经常被用于真实的商品和服务交易,而不仅仅局限在网络游戏等虚拟空间中。

随着数字货币受到越来越多的关注,与之相对应的数字钱包也变得越来越重要。对于用户来说最重要的就是数字钱包的私钥,拥有了私钥,用户就能对自己的数字资产进行交易;如果私钥被破解或者被遗忘就意味着数字资产的丢失。在数字货币越来越通用的今天,使用数字钱包的人越来越多,那么就需要生成更多的私钥。

现有技术使用的私钥生成方法是通过rsa加密(非对称加密)来实现的。rsa是一种公开密钥密码体制。所谓的公开密钥密码体制就是使用不同的加密密钥与解密密钥,是一种“由已知加密密钥推导出解密密钥在计算上是不可行的”密码体制。使用rsa加密算法生成私钥的步骤如下:

1.随机选择两个不相等的质数p和q;

2.然后计算p和q的乘积n;

3.计算n的欧拉函数φ(n);

4,随机选择一个整数e,条件是1<e<φ(n),且e与φ(n)互质

5,计算e对于φ(n)的模反元素d,所谓"模反元素"就是指有一个整数d,可以使得ed被φ(n)除的余数为1;

6,n和d封装成私钥,将n和e封装成公钥。

最终生成两个密钥,一个是保密密钥(私钥),由用户保存;另一个为公开密钥(公钥),可对外公开,甚至可在网络服务器中注册。为提高保密强度,rsa密钥至少为500位长,一般推荐使用1024位。

现有技术的私钥生成方法本身存在如下缺陷:

1.由于rsa进行的都是大数计算,无论是通过软件还是硬件实现,速度缓慢一直是rsa的缺陷。所以一般来说这种方法只用于少量数据加密;

2.rsa加密技术中,当知道公钥时,封装成私钥使用的数字是有可能被推导出的,也就意味着私钥存在被破解的可能性,十分不安全。

因此,如何快速、大规模的生成私钥并保证私钥的安全性是迫切需要关注的问题。



技术实现要素:

本发明的目的是提供一种基于区块链大量生成私钥的方法及装置,通过同时选取当前区块链的所有区块,并对每个区块中的哈希值和交易信息数据进行拼接生成随机数,再基于随机数和身份信息生成私钥,从而达到快速生成大量私钥的目的。

为解决上述问题,本发明的第一方面提供了一种基于区块链大量生成私钥的方法,包括:

步骤s100,选取当前时间区块链中的一个区块;步骤s101,提取区块中的哈希值h(k)和交易信息数据dkn;步骤s102,将区块中的哈希值h(k)与交易信息数据dkn进行拼接并进行哈希计算,生成随机数;步骤s103,基于所述随机数和身份信息生成私钥。

进一步地,在生成所述私钥后,还包括:步骤s200,对已生成随机数的区块进行标号,以得到与每个区块对应的区块编号;步骤s201,创建所述身份信息与区块编号的对应关系,生成区块数据表。

进一步地,对所述已生成随机数的区块进行标号时,根据区块的时间戳t(k)进行标号。

进一步地,该方法还包括:选取当前时间区块链中存在的所有区块,对每个区块执行前述步骤s101-s103,以批量生成私钥。

根据本发明的另一个方面,提供了一种基于区块链大量生成私钥的装置,包括:

区块选取模块,用于选取当前时间区块链中的一个区块;数据提取模块,用于提取区块中的哈希值h(k)和交易信息数据dkn;随机数生成模块,用于将区块中的哈希值h(k)与交易信息数据dkn进行拼接并进行哈希计算,生成随机数;私钥生成模块,用于基于随机数和身份信息生成私钥。

进一步地,该装置还包括区块数据表生成终端:标号模块,用于对已生成随机数的区块进行标号,以得到与每个区块对应的区块编号;区块数据表生成模块,用于创建身份信息与区块编号的对应关系,生成区块数据表。

进一步地,对已生成随机数的区块进行标号时,根据区块的时间戳t(k)进行标号。

进一步地,还包括:选取当前时间区块链中存在的所有区块,对每个区块执行前述步骤s101-s103,以批量生成私钥。

本发明实施例通过同时选取当前区块链的所有区块,并对每个区块中的哈希值和交易信息数据进行拼接生成随机数,再基于随机数和身份信息生成私钥。

本发明的上述技术方案具有如下有益的技术效果:

1.私钥生成速度快;

2.私钥生成数量多;

3.安全性高。基于区块链产生的私钥不会被其他人再次生成,保证每个私钥都是独一无二的。

附图说明

图1是区块链网络中区块结构示意图;

图2是根据本发明的一种基于区块链大量生成私钥的方法的方法流程图;

图3是根据本发明方法中的生成区块数据表步骤的方法流程图;

图4是根据本发明的一种基于区块链大量生成私钥的装置的结构示意图;

图5是根据本发明装置中区块数据表生成终端的结构示意图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚明了,下面结合具体实施方式并参照附图,对本发明进一步详细说明。应该理解,这些描述只是示例性的,而并非要限制本发明的范围。此外,在以下说明中,省略了对公知结构和技术的描述,以避免不必要地混淆本发明的概念。

术语解释:区块链是一串使用密码学方法相关联产生的数据块,每一个数据块中包含了一次网络交易的信息,用于验证其信息的有效性(防伪)和生成下一个区块。

狭义来讲,区块链是一种按照时间顺序将数据区块以顺序相连的方式组合成的一种链式数据结构,并以密码学方式保证的不可篡改和不可伪造的分布式账本。广义来讲,区块链技术是利用块链式数据结构来验证与存储数据、利用分布式节点共识算法来生成和更新数据、利用密码学的方式保证数据传输和访问的安全、利用由自动化脚本代码组成的智能合约来编程和操作数据的一种全新的分布式基础架构与计算范式。

请参阅图1,图1是区块链网络中区块结构示意图。

如图1所示,整条区块链主要展示了三个区块,其余区块省略,h(k)代表每个区块中的哈希值,这个哈希值与前一区块的数据有关。

t(k)代表每个区块中的时间戳,时间戳意味着区块产生的时间和当时正发生的事件(例如交易事件)被永久性的保留了下来。

dk1、dk2、dk3、dk4…dkn代表第k个区块中记录的交易信息,包括当前区块的交易数量以及经过验证的区块创建过程中生成的所有交易记录。

请参阅图2,图2是根据本发明的一种基于区块链大量生成私钥的方法的方法流程图。

如图2所示,根据本发明的一个方面,提供了一种基于区块链大量生成私钥的方法,包括:

步骤s100,选取当前时间区块链中的一个区块。

具体地,在区块链网络中构造一条足够长的区块链,选取当前时间区块链中的一个区块。

步骤s101,提取区块中的哈希值h(k)和交易信息数据dkn。

其中,交易信息数据dkn包括交易时间、智能合约、交易数量、交易记录等等信息数据。

步骤s102,将区块中的哈希值h(k)与交易信息数据dkn进行拼接并进行哈希计算,生成随机数。

具体地,将区块中的哈希值h(k)与交易信息数据dkn进行拼接时,先将交易信息数据dk1、dk2、dk3、dk4…dkn进行打包整合,得到交易信息数据集合;再将交易信息数据集合与区块中的哈希值h(k)进行拼接并进行哈希计算,生成一串随机数。

其中,随机数可以是一个256bits的数。

步骤s103,基于所述随机数和身份信息生成私钥。

其中,身份信息一般为用户的身份证号。私钥可以直接由身份信息和步骤s102生成的随机数拼接而成,也可以采用现有的算法对拼接之后的信息计算生成。

请参阅图3,图3是根据本发明方法中的生成区块数据表步骤的方法流程图。

如图3所示,在生成所述私钥后,还包括:步骤s200,对已生成随机数的区块进行标号,以得到与每个区块对应的区块编号;步骤s201,创建所述身份信息与区块编号的对应关系,生成区块数据表。

其中,对所述已生成随机数的区块进行标号时,根据区块的时间戳t(k)进行标号。

区块数据表示例如下表:

该方法还包括:选取当前时间区块链中存在的所有区块,对每个区块执行前述步骤s101-s103,以批量生成私钥。

由于区块链的生成是并行的,一个区块链网络中可以同时产生多个链,因此选取当前时间区块链中存在的所有区块,对每个区块执行提取所述区块中的哈希值h(k)和交易信息数据dkn,再对其进行拼接并进行哈希计算,会在短时间内生成大量随机数,从而可以在短时间内同时生成大量私钥。

请参阅图4,图4是根据本发明的第一种基于区块链生成私钥的装置的结构示意图。

如图4所示,根据本发明的另一方面,提供了一种基于区块链大量生成私钥的装置,包括:

区块选取模块100,用于选取当前时间区块链中的一个区块。

数据提取模块101,用于提取区块中的哈希值h(k)和交易信息数据dkn。

随机数生成模块102,用于将区块中的哈希值h(k)与交易信息数据dkn进行拼接并进行哈希计算,生成随机数。

私钥生成模块103,用于基于随机数和身份信息生成私钥。

请参阅图5,图5是根据本发明装置中区块数据表生成终端的结构示意图。

其中,该装置还包括区块数据表生成终端,区块数据表生成终端包括:

标号模块200,用于对已生成随机数的区块进行标号,以得到与每个区块对应的区块编号。

区块数据表生成模块201,用于创建身份信息与区块编号的对应关系,生成区块数据表。

其中,对已生成随机数的区块进行标号时,根据区块的时间戳t(k)进行标号。

其中,还包括:选取当前时间区块链中存在的所有区块,对每个区块执行前述步骤s101-s103,以批量生成私钥。

下面简述下私钥的应用。

私钥主要用于数字货币的交易。无论是谁拥有了私钥,就可以对与该私钥相应的钱包地址中的数字货币进行操作

在生成私钥之后,还需要将私钥经过非对称加密算法生成公钥。而且还需要基于公钥生成区块链钱包地址。这样钱包拥有者才能使用钱包进行交易。

非对称加密算法是一种不可逆算法,已知私钥时可以通过非对称加密算得公钥,而已知公钥时却无法反向计算出私钥。非对称加密算法可以是rsa算法、elgamal算法、背包算法、rabin算法、d-h算法、ecc(椭圆曲线加密算法)等。

得到公钥之后,将一个字节的地址版本号连接到公钥哈希头部,然后对其进行两次哈希运算,将结果的前4字节作为公钥哈希的校验值,连接在其尾部。将该计算结果使用预定编码方法进行编码,就得到了钱包地址。

举例一个本发明应用在银行系统中的场景:

某银行准备发行一种数字人民币,则需要给每一个使用数字人民币的用户配置一个数字钱包。此时该银行根据银行系统中一段时间内所有的交易行为生成区块链,先选取区块链中的所有区块,提取每个区块中的哈希值h(k)和交易信息数据dkn,再将每个区块中的哈希值h(k)与交易信息数据dkn进行拼接并进行哈希计算,生成随机数,再基于所述随机数和身份信息生成私钥,依次方法生成大量私钥。基于私钥可以生成公钥,基于公钥可以生成钱包地址。为所有的用户配置数字钱包之后,对已生成随机数的区块进行标号,以得到与每个区块对应的区块编号,创建所述身份信息与所述区块编号的对应关系,生成区块数据表。该银行保存此区块链,其他与本银行有合作的商业银行保存储存身份信息与区块编号一一对应关系的区块数据表。

当某用户丢失自己的私钥时,他可以在某商业银行办理挂失业务,在商业银行核实用户身份无误后,根据用户的身份信息在数据库的区块数据表中查找与此身份信息相对应的区块编号,并将区块编号发送给该银行申请私钥找回。在该银行将对应的旧私钥发送回来的同时,使用此用户的身份信息按照本申请基于区块链生成私钥的方法生成一个新的私钥,由私钥生成新的公钥和新的钱包地址,即对应一个新的数字钱包,并重新进行区块标号与区块数据表更新。此时商业银行使用旧的私钥将旧钱包里的数字货币转到新的数字钱包里(因为旧的私钥已丢失,不安全),并将新的私钥提供给用户。可见,通过这种方式生成的私钥,即使私钥丢失也不会影响数字货币的安全性,重新生成新私钥也比较简单易行。

本发明旨在保护一种基于区块链大量生成私钥的方法及装置。通过同时选取当前区块链的所有区块,并对每个区块中的哈希值和交易信息数据进行拼接生成随机数,再基于随机数和身份信息生成私钥,从而达到快速生成大量私钥的目的。

应当理解的是,本发明的上述具体实施方式仅仅用于示例性说明或解释本发明的原理,而不构成对本发明的限制。因此,在不偏离本发明的精神和范围的情况下所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。此外,本发明所附权利要求旨在涵盖落入所附权利要求范围和边界、或者这种范围和边界的等同形式内的全部变化和修改例。

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