一种数字货币钱包的密钥数据查询获取方法及装置与流程

文档序号:19418606发布日期:2019-12-14 01:11阅读:802来源:国知局
一种数字货币钱包的密钥数据查询获取方法及装置与流程

本申请涉及数字货币钱包技术领域,尤其涉及一种数字货币钱包的密钥数据查询获取方法及装置。



背景技术:

数字货币钱包,又称分层确定性钱包,数字货币钱包相当于一个私钥的“容器”,现有的数字货币钱包密钥派生都是基于bip32和bip39协议进行的,即从一个“种子”推导出一个主私钥,主私钥推导出海量的子私钥。“确定性”意味着同一个“种子”可以推导出同一批子私钥。

然而,数字货币钱包在实际应用中,一般只会保留主私钥,而实际使用到的每一个子私钥都是由主私钥通过即时进行的椭圆曲线密码学运算推导得到的,而且子私钥的推导过程需要相当程度的运算量,势必会影响到数字货币钱包的获取密钥效率。



技术实现要素:

本申请提供了一种数字货币钱包的密钥数据查询获取方法及装置,用于解决现有的数字货币钱包密钥获取效率低的技术问题。

有鉴于此,本申请第一方面提供了一种数字货币钱包的密钥数据查询获取方法,包括:

响应于接收到的密钥获取指令,提取所述密钥获取指令中的目标密钥路径信息;

根据所述目标密钥路径信息对已存储的密钥节点集进行遍历,确定与所述目标密钥路径信息相对应的目标密钥节点,其中,所述密钥节点集为利用密钥种子进行推导运算得到密钥节点,并存储在哈希表中得到的,所述密钥节点集包括:一个主密钥和多个子密钥;

输出所述目标密钥节点。

可选地,所述根据所述目标密钥路径信息对已存储的密钥节点集进行遍历之后还包括:

若根据所述目标密钥路径信息未遍历到所述目标密钥节点,则根据所述目标密钥路径信息创建并存储所述目标密钥节点。

可选地,所述根据所述目标密钥路径信息创建并存储所述目标密钥节点具体包括:

基于所述目标密钥路径信息,从所述密钥节点集存储的密钥节点中查询出密钥路径信息与所述目标密钥路径相似值最高的父密钥节点;

根据所述目标密钥路径信息,利用所述父密钥节点创建并存储所述目标密钥节点。

可选地,所述方法还包括:

根据预置的密钥节点存储量阈值和密钥节点的历史使用记录,按照密钥的使用时间先后,保留若干个历史密钥节点,所述历史密钥节点的数量与所述密钥节点存储量阈值相等;

删除所述历史密钥节点以外的密钥节点。

可选地,所述密钥节点具体包括:密钥路径信息、私钥数据、链码数据以及密钥关联标识,所述密钥关联标识用于保存下一个密钥节点的存储地址。

本申请第二方面提供了一种数字货币钱包的密钥数据查询获取装置,包括:

密钥路径提取单元,用于响应于接收到的密钥获取指令,提取所述密钥获取指令中的目标密钥路径信息;

目标密钥获取单元,用于根据所述目标密钥路径信息对已存储的密钥节点集进行遍历,确定与所述目标密钥路径信息相对应的目标密钥节点,其中,所述密钥节点集为利用密钥种子进行推导运算得到密钥节点,并存储在哈希表中得到的,所述密钥节点集包括:一个主密钥和多个子密钥;

目标密钥输出单元,用于输出所述目标密钥节点。

可选地,还包括:

目标密钥创建单元,用于若根据所述目标密钥路径信息未遍历到所述目标密钥节点,则根据所述目标密钥路径信息创建并存储所述目标密钥节点。

可选地,所述目标密钥创建单元具体用于:

基于所述目标密钥路径信息,从所述密钥节点集存储的密钥节点中查询出密钥路径信息与所述目标密钥路径相似值最高的父密钥节点,根据所述目标密钥路径信息,利用所述父密钥节点创建并存储所述目标密钥节点。

可选地,所述装置还包括:

密钥节点更新单元,用于根据预置的密钥节点存储量阈值和密钥节点的历史使用记录,按照密钥的使用时间先后,保留若干个历史密钥节点,所述历史密钥节点的数量与所述密钥节点存储量阈值相等。

可选地,所述密钥节点具体包括:密钥路径信息、私钥数据、链码数据以及密钥关联标识,所述密钥关联标识用于保存下一个密钥节点的存储地址。

从以上技术方案可以看出,本申请具有以下优点:

本申请提供了一种数字货币钱包的密钥数据查询获取方法及装置,其中方法包括:响应于接收到的密钥获取指令,提取密钥获取指令中的目标密钥路径信息;根据目标密钥路径信息对已存储的密钥节点集进行遍历,确定与目标密钥路径信息相对应的目标密钥节点并返回目标密钥节点,其中,密钥节点集为利用密钥种子进行推导运算得到密钥节点并通过哈希表存储后得到的。

本申请基于预先建立的密钥节点集,通过遍历查询的方式从密钥节点集中获取所需的目标密钥节点,无需利用主密钥进行即时运算获取子密钥,再加上进行数据查询产生的运算量远小于进行椭圆曲线密码学运算产生的运算量,解决了现有的数字货币钱包密钥获取效率低的技术问题。

附图说明

为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其它的附图。

图1为本申请提供的一种数字货币钱包的密钥数据查询获取方法的第一个实施例的流程示意图;

图2为本申请提供的一种数字货币钱包的密钥数据查询获取方法的第二个实施例的流程示意图;

图3为本申请提供的一种数字货币钱包的密钥数据查询获取方法中的密钥节点拓扑结构示例图;

图4为本申请提供的一种数字货币钱包的密钥数据查询获取装置的第一个实施例的结构示意图。

具体实施方式

本申请实施例提供了一种数字货币钱包的密钥数据查询获取方法及装置,用于解决现有的数字货币钱包密钥获取效率低的技术问题。

为使得本申请的发明目的、特征、优点能够更加的明显和易懂,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,下面所描述的实施例仅仅是本申请一部分实施例,而非全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本申请保护的范围。

请参阅图1,本申请实施例提供了一种数字货币钱包的密钥数据查询获取方法,包括:

步骤101、响应于接收到的密钥获取指令,提取密钥获取指令中的目标密钥路径信息。

需要说明的是,在进行区块链数字钱包业务时,必须要先获取到业务所需要的密钥,为此,本实施例在接收到密钥获取指令后,先从接收到的密钥获取指令中提取出想要获取的目标密钥路径信息。

步骤102、根据目标密钥路径信息对已存储的密钥节点集进行遍历,确定与目标密钥路径信息相对应的目标密钥节点。

其中,密钥节点集为基于bip32和bip39协议,利用密钥种子进行推导运算得到密钥节点,并存储在哈希表中得到的,密钥节点集包括:一个主密钥和多个子密钥。

需要说明的是,根据步骤101中获取到的目标密钥路径信息,对已存储的密钥节点集中的密钥节点数据进行遍历,找出与目标密钥路径信息对应的目标密钥节点,并将该目标密钥节点的数据通过响应指令的方式返回给密钥获取指令的发送方。

步骤103、输出目标密钥节点。

本申请基于由哈希表建立的密钥节点集,通过遍历查询的方式从密钥节点集中获取所需的目标密钥节点,无需利用主密钥进行即时运算获取子密钥,虽然数据查询也会产生一定的运算量,但是进行数据查询产生的运算量远小于进行椭圆曲线密码学运算产生的运算量,总体而言依然达到了提高数字货币钱包密钥获取速度的目的,解决了现有的数字货币钱包密钥获取效率低的技术问题。

以上为本申请提供的一种数字货币钱包的密钥数据查询获取方法的第一个实施例的详细说明,下面为本申请提供的一种数字货币钱包的密钥数据查询获取方法的第二个实施例的详细说明。

请参阅图2,本申请实施例提供了一种数字货币钱包的密钥数据查询获取方法,包括:

步骤201、响应于接收到的密钥获取指令,提取密钥获取指令中的目标密钥路径信息。

步骤202、根据目标密钥路径信息对已存储的密钥节点集进行遍历,判断是否遍历到与目标密钥路径信息相对应的目标密钥节点,若是,则执行步骤203,若否,则执行步骤204。

其中,密钥节点集为基于bip32和bip39协议,利用密钥种子进行推导运算得到密钥节点,并存储在哈希表中得到的,密钥节点集包括:一个主密钥和多个子密钥。

需要说明的是,根据步骤201中获取到的目标密钥路径信息,对已存储的密钥节点集中的密钥节点数据进行遍历,找到了与目标密钥路径信息对应的目标密钥节点,并将该目标密钥节点的数据通过响应指令的方式返回给密钥获取指令的发送方。

另外,本实施例通过采用哈希表结构存储密钥节点数据,可以利用哈希表的结构特性,实现密钥节点的快速查询。

步骤203、输出目标密钥节点。

步骤204、根据目标密钥路径信息创建并存储目标密钥节点,然后执行步骤203。

需要说明的是,当在密钥节点集中未找到对应的目标密钥节点,则需要根据目标密钥路径信息通过密钥派生方式创建出目标密钥节点。

具体的创建目标密钥的步骤包括:

根据目标密钥路径信息的密钥路径深度,对与密钥路径深度相等的密钥节点进行遍历,若未遍历到目标密钥节点,则降低目标密钥路径信息的密钥路径深度,对与调整后的密钥路径深度相等的密钥节点进行遍历,直至遍历成功,并将匹配到的密钥节点设为父密钥节点;

需要说明的是,密钥之间结构一般都是树状结构分布的,首先,根据目标密钥路径信息确定密钥路径深度n。以及当前遍历的密钥节点的深度n,其中,在进行第一轮遍历时,n=n。

对密钥节点集的第n层的密钥节点进行遍历,查找各个节点中的密钥路径数据是否与当前密钥路径数据的前4*n个字节完全一致。若在第一轮遍历中就找到了相同路径的密钥节点,则将该节点作为目标密钥节点,若无相同路径的节点,使n=n-1,重新对密钥节点集的第n层的密钥节点进行遍历,若存在相同路径的节点,记录下当前n值及该密钥节点的数据,将该节点设为父密钥节点。

接着,根据目标密钥路径信息,利用父密钥节点创建目标密钥节点并将创建的目标密钥节点保存到密钥节点集之中。

为了更清楚地解释本实施例的密钥查询获取的完整过程,本实施例下面将结合例子进行解释。

请参阅图3,图3提供的是密钥节点集中的密钥节点数据的树状架构,其中,m为主密钥,a、b等均为由主密钥m派生得到的子密钥。

若从密钥获取指令中提取出的目标密钥路径为madf时,此时密钥路径的深度n=3,第一轮遍历时的遍历深度n=3,基于图示的节点拓扑可知,通过遍历可以找出目标密钥节点f。

若从密钥获取指令中提取出的目标密钥路径为ma时,此时密钥路径的深度n=1,第一轮遍历时的遍历深度n=1,基于图示的节点拓扑可知,通过遍历可以找出目标密钥节点a。

若从密钥获取指令中提取出的目标密钥路径为mbgh时,此时密钥路径的深度n=3,第一轮遍历时的遍历深度n=3,基于图示的节点拓扑可知,在第一轮的遍历中无法获得目标密钥节点h,此时需要调整遍历深度参数n=3-1=2,即调整后的路径信息已变为mbg,若仍无法遍历成功,则还需要调整遍历深度参数n=2-1=1,此时,调整后的路径信息已变为mb,基于图示的节点拓扑可知,根据路径信息mb可以遍历到密钥节点b,并将遍历到的密钥节点b设为父密钥节点;

然后再根据父密钥节点使用父密钥节点b循环迭代派生出各层级的子密钥节点(g和h),最终得到目标密钥节点h,接着将各个层级新派生的节点数据加入到哈希表缓存。

需要说明的是,上述基于图3的查询过程仅起示例作用,其中的密钥路径信息也仅为示例,并不代表真实的密钥节点拓扑结构和密钥路径信息。

进一步地,在上述实施例的基础上,本申请的实施例还包括:

步骤205:根据预置的密钥节点存储量阈值和密钥节点的历史使用记录,按照密钥的使用时间先后,保留若干个历史密钥节点。

其中,历史密钥节点的数量与密钥节点存储量阈值相等;

步骤206、删除历史密钥节点以外的密钥节点。

需要说明的是,鉴于终端设备有限的存储空间,以及接近无限的派生密钥数量,为了控制本实施例的密钥存储机制为终端设备造成的存储空间占用问题,本实施例在上述步骤的基础上还加入了密钥存储量控制机制,按照密钥的使用时间记录,保留最近使用过历史密钥节点,再将除选定的历史密钥节点以外的密钥节点数据删除,从而控制密钥节点集的容量。

进一步地,密钥节点含有的信息具体包括:密钥路径信息(可作为哈希表的键值4*n字节,其中,n为密钥的派生层级)、私钥数据(32字节)、链码数据(32字节)以及密钥关联标识,密钥关联标识用于保存下一个密钥节点的存储地址,另外,还可以包括有公钥数据(64字节,可选保存,可由私钥单向推导)和数字货币地址(可选保存,可由公钥单向推导)。

以上为本申请提供的一种数字货币钱包的密钥数据查询获取方法的第二个实施例的详细说明,下面为本申请提供的一种数字货币钱包的密钥数据查询获取装置的第一个实施例的详细说明。

请参阅图4,本实施例提供了一种数字货币钱包的密钥数据查询获取装置,包括:

密钥路径提取单元401,用于响应于接收到的密钥获取指令,提取密钥获取指令中的目标密钥路径信息;

目标密钥获取单元402,用于根据目标密钥路径信息对已存储的密钥节点集进行遍历,确定与目标密钥路径信息相对应的目标密钥节点,其中,密钥节点集为基于bip32和bip39协议,利用密钥种子进行推导运算得到密钥节点,并存储在哈希表中得到的,密钥节点集包括:一个主密钥和多个子密钥;

目标密钥输出单元403,用于输出目标密钥节点。

进一步地,还包括:

目标密钥创建单元404,用于若根据目标密钥路径信息未遍历到目标密钥节点,则根据目标密钥路径信息创建并存储目标密钥节点。

进一步地,目标密钥创建单元404具体用于:

根据目标密钥路径信息的密钥路径深度,对与密钥路径深度相等的密钥节点进行遍历,若未遍历到目标密钥节点,则降低目标密钥路径信息的密钥路径深度,对与调整后的密钥路径深度相等的密钥节点进行遍历,直至遍历成功,并将匹配到的密钥节点设为父密钥节点,根据目标密钥路径信息,利用父密钥节点创建并存储目标密钥节点。

进一步地,还包括:

密钥节点更新单元405,用于根据预置的密钥节点存储量阈值和密钥节点的历史使用记录,按照密钥的使用时间先后,保留若干个历史密钥节点,历史密钥节点的数量与密钥节点存储量阈值相等,删除历史密钥节点以外的密钥节点。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

本申请的说明书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例例如能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质。

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

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