CN109787755B - 一种密钥生成方法、密钥生成装置及电子设备 - Google Patents

一种密钥生成方法、密钥生成装置及电子设备 Download PDF

Info

Publication number
CN109787755B
CN109787755B CN201811535286.8A CN201811535286A CN109787755B CN 109787755 B CN109787755 B CN 109787755B CN 201811535286 A CN201811535286 A CN 201811535286A CN 109787755 B CN109787755 B CN 109787755B
Authority
CN
China
Prior art keywords
binary tree
data
tree
shape
binary
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
CN201811535286.8A
Other languages
English (en)
Other versions
CN109787755A (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.)
Individual
Original Assignee
Individual
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 Individual filed Critical Individual
Priority to CN201811535286.8A priority Critical patent/CN109787755B/zh
Publication of CN109787755A publication Critical patent/CN109787755A/zh
Application granted granted Critical
Publication of CN109787755B publication Critical patent/CN109787755B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Abstract

本申请提供了一种密钥生成方法、密钥生成装置、电子设备及计算机存储介质,所述密钥生成方法包括:获取用于生成密钥的数据,其中,所述数据是随机生成的;根据所述数据及预设的二叉树生成方案,确定所述数据对应的二叉树形状及二叉树位置;基于所述二叉树形状及二叉树位置,获取目标二叉树,所述目标二叉树为所述数据对应的密钥。本申请通过任一随机数即可快速生成对应的二叉树密钥,通过该二叉树密钥可一定程度上提升数据的安全性。

Description

一种密钥生成方法、密钥生成装置及电子设备
技术领域
本申请属于数据加密技术领域,尤其涉及一种密钥生成方法、密钥生成装置、电子设备及计算机存储介质。
背景技术
在数据加密中,可以利用二叉树的遍历序列对数据进行加密。由于n结点构成的二叉树数量足够大,把二叉树作为密钥进行加密或者解密运算比现有的加密算法具有更多密钥。
然而,现有技术中是使用预先设置好的二叉树对数据加密,用户容易获取到该二叉树信息,从而导致加密的安全性不高。
发明内容
有鉴于此,本申请实施例提供了一种密钥生成方法、密钥生成装置、电子设备及计算机存储介质,可提升数据的安全性。
本申请实施例的第一方面提供了一种密钥生成方法,包括:
获取用于生成密钥的数据,其中,上述数据是随机生成的;
根据上述数据及预设的二叉树生成方案,确定上述数据对应的二叉树形状及在上述二叉树形状中的位置;
基于上述二叉树形状及上述位置,获取目标二叉树,上述目标二叉树为上述数据对应的密钥。
本申请实施例的第二方面提供了一种密钥生成装置,包括:
随机数据获取单元,用于获取用于生成密钥的数据,其中,上述数据是随机生成的;
形状位置确定单元,用于根据上述数据及预设的二叉树生成方案,确定上述数据对应的二叉树形状及在上述二叉树形状中的位置;
目标二叉树获取单元,用于基于上述二叉树形状及上述位置,获取目标二叉树,上述目标二叉树为上述数据对应的密钥。
本申请实施例的第三方面提供了一种电子设备,包括存储器、处理器以及存储在上述存储器中并可在上述处理器上运行的计算机程序,上述处理器执行上述计算机程序时实现如上第一方面所提供的方法的步骤。
本申请实施例的第四方面提供了一种计算机可读存储介质,上述计算机可读存储介质存储有计算机程序,上述计算机程序被处理器执行时实现如上第一方面所提供的方法的步骤。
本申请的第五方面提供了一种计算机程序产品,上述计算机程序产品包括计算机程序,上述计算机程序被一个或多个处理器执行时实现如上述第一方面的方法的步骤。
由上可见,通过本申请方案,首先获取用于生成密钥的数据,其中,上述数据是随机生成的,然后根据上述数据及预设的二叉树生成方案,确定上述数据对应的二叉树形状及在上述二叉树形状中的位置,最后基于上述二叉树形状及上述位置,获取目标二叉树,上述目标二叉树为上述数据对应的密钥。在本申请方案中,由于用于生成密钥的数据是随机生成的,因而最后所获得的目标二叉树实际上也是随机的,能够有效提高数据加密的安全性,同时具有较强的易用性和实用性。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的密钥生成方法的实现流程示意图;
图2是本申请实施例提供的Ψ(n-k)|(k-1)的第一棵树和最后一棵树的示意图;
图3是本申请实施例提供的4结点二叉树生成序列的示意图;
图4是本申请实施例提供的3结点二叉树的示意图;
图5是本申请实施例提供的密钥生成装置的结构框图;
图6是本申请实施例提供的电子设备的示意图。
具体实施方式
以下描述中,为了说明而不是为了限定,提出了诸如特定系统结构、技术之类的具体细节,以便透彻理解本申请实施例。然而,本领域的技术人员应当清楚,在没有这些具体细节的其它实施例中也可以实现本申请。在其它情况中,省略对众所周知的系统、装置、电路以及方法的详细说明,以免不必要的细节妨碍本申请的描述。
为了说明本申请所述的技术方案,下面通过具体实施例来进行说明。
实施例一
图1示出了本申请实施例一提供的密钥生成方法的实现流程,详述如下:
在步骤101中,获取用于生成密钥的数据。
在本申请实施例中,上述用于生成密钥的数据是随机生成的,具体地,上述数据可以是用户随机输入的数据、本地存储的数据中随机挑选的数据、从网络中随机获取的数据或者是通过随机数生成函数而随机生成的数据。可选地,上述用于生成密钥的数据的类型可以是数字型数据、字节型数据或者是文本型数据。当上述数据的类型是字节型数据或者是文本型数据时,可以先将该数据转换为数字型数据,上述数据类型的转换方式在此处不再赘述。
在步骤102中,根据上述数据及预设的二叉树生成方案,确定上述数据对应的二叉树形状及在上述二叉树形状中的位置。
在本申请实施例中,上述预设的二叉树生成方案具体为n结点二叉树生成方案,其中n>1且n为整数。可选地,上述n可以为系统所预先设定的数值,或者,上述n也可以为用户所预先设定的数值,也即是说,上述n为预先已指定的数值,上述n确定后,可在密钥的生成方及解析方之间进行约定。可选地,在上述步骤102之前,上述密钥生成方法还包括:
A1、计算上述n结点二叉树所包含的所有二叉树的数量,记为B(n);
A2、检测上述数据是否大于B(n);
其中,可以用B(n)表示n个结点所能够生成的二叉树的数量。具体地,把所有构成的二叉树按照左子树结点数量分为n-1,n-2,……,2,1,0共n种情况,那么相应地,每种情况的二叉树的数量分别是B(n-1)B(0),B(n-2)B(1),……,B(2)B(n-3),B(1)B(n-2),B(0)B(n-1)。基于此,上述n个结点可以构成的二叉树的数量B(n)可以用以下公式表示:
Figure BDA0001906708090000041
通过上述公式可知,二叉树在生成时存在递归关系。在计算得到了B(n)后,可以检测上述步骤101中所获取到的用于生成密钥的数据是否大于上述B(n),若是,则认为上述n结点二叉树由于受限于其二叉树的数量而无法表达上述数据;若否,则认为在上述n结点二叉树中,可以找到能够表达上述数据的二叉树。也即是说,n结点二叉树所能够表达的最大数据为B(n)。基于此,上述步骤102可具体为:若上述数据不大于B(n),则根据上述数据及预设的二叉树生成方案,确定上述数据对应的二叉树形状及在上述二叉树形状中的位置。上述二叉树形状通过定义二叉树的左子树及右子树的数量而决定,例如,Ψ(n-k)|(k-1)指的是左子树为n-k个结点,右子树为k-1个结点的二叉树形状。
在步骤103中,基于上述二叉树形状及上述位置,获取目标二叉树,上述目标二叉树为上述数据对应的密钥。
在本申请实施例中,通过步骤102中确定好的上述数据所对应的二叉树形状及在上述二叉树形状中的位置,可以确定唯一的一个二叉树作为目标二叉树,该目标二叉树即可作为上述数据所对应的二叉树密钥,实现密钥的功能,例如加密或者解密的功能。例如,利用上述目标二叉树作为密钥,将明文数据转化为密文数据。具体地,可以先将需要加密的明文数据转化为二进制字符串,则加密过程是分解明文中的字符串,从根结点出发,按字符“0”或“1”确定查找该结点的左孩子或右孩子,直至叶结点或者只有一个孩子的树结点,获得该子串相对应的结点序号。将结点序号按照明文的顺序排列在一起,即得到基于二叉树加密算法的密文,加密算法的密钥即是二叉树的前序(后序)和中序遍历序列。
可选地,上述密钥生成方法还包括:
B1、定义同形状二叉树中的初始二叉树,其中,上述初始二叉树为除叶子结点外每个结点只有左子树的二叉树;
在本申请实施例中,在获取到预先设置的二叉树结点n之后,首先生成多个同形状二叉树序列,上述同形状二叉树序列为左子树结点相同的n结点二叉树的序列。其中上述生成多个同形状二叉树序列包括:生成左子树有n-k个结点,右子树有k-1个结点的所有形状的二叉树,k=1,2,3……,n,每个k对应一个同形状二叉树序列,即n结点二叉树一共可以生成n个同形状二叉树序列。在本申请实施例中,上述同形状二叉树序列即为通形状二叉树的集合。
B2、按照前序遍历的顺序,将上述初始二叉树从最接近叶子结点处开始把左子树转换成右子树,并在每次转换完成后存储转换后的二叉树,直到上述初始二叉树除叶子结点外每个结点只有右子树为止,将定义的上述初始二叉树及存储的上述转换后的二叉树的集合作为同形状二叉树的集合;
在本申请实施例中,上述生成同形状二叉树序列包括:针对任一二叉树形状,首先定义同形状二叉树中的初始二叉树,其中初始二叉树为除叶子结点外每个结点只有左子树的二叉树;然后按照前序遍历的顺序,将上述初始二叉树从最接近叶子结点处开始把左子树转换成右子树,并在每次转换完成后存储转换后的二叉树,直到上述转换后的二叉树除叶子结点外每个结点只有右子树为止,将定义的上述初始二叉树及存储的上述转换后的各个二叉树的集合作为同形状二叉树的集合,也即,作为同形状二叉树序列。示例性的,可以用Ψ(n-k)|(k-1)表示左子树有n-k个结点右子树有k-1个结点的同形状二叉树。对Ψ(n-k)|(k-1)中的任意一棵树,它包含n-k个左结点,k-1个右结点。在生成该形状的二叉树时,可以首先定义同形状二叉树的第一棵树和最后一棵树。
如图2所示,图2示出了Ψ(n-k)|(k-1)形状的第一棵树和最后一棵树。左图表示Ψ(n-k)|(k-1)的第一棵树,在上述第一棵树中,左子树的n-k个结点除叶子外都只有左儿子,右子树的k-1个结点除叶子外也只有左儿子;相应地,右图表示Ψ(n-k)|(k-1)的最后一棵树,左子树的n-k个结点除叶子外都只有右儿子,右子树的k-1个结点除叶子外也只有右儿子。有了同形状二叉树的第一棵树和最后一棵树的定义,下面的步骤可以按照当前树生成其下一棵树,其具体流程为:
C1、在当前树中,检测是否能够找到左子树的下一个子树,若是,则执行步骤C2,若否,则执行步骤C3;
C2、如果能够找到左子树的下一个子树,则该左子树的下一个子树即为当前树的下一棵树,结束流程。
C3、如果无法找到左子树的下一个子树,则在当前树中,检测是否能够找到右子树的下一个子树,若是,则执行步骤C4,若否,则继续检测n-k是否大于0,若是,则执行步骤C5,若否,则执行步骤C6;
C4、如果能够找到右子树的下一个子树,则该右子树的下一个子树即为当前树的下一棵树,结束流程。
C5、如果无法找到右子树的下一个子树,且n-k>0,则更新k值,令k=k+1,并取Ψ(n-k-1)|(k)的第一棵树,并将Ψ(n-k-1)|(k)的第一棵树作为当前树的下一棵树,结束流程。
C6、如果无法找到右子树的下一个子树,且n-k=0,则当前树是n结点二叉树的最后一棵树,此时不存在下一棵树,结束流程。
上述流程主要描述了,在根据当前树生成下一课树时,先在左子树中取下一个树;如果不能取,则再在右子树中取下一个树;若还取不到,则更新k值,取下一个形状的第一棵树,直至到n结点二叉树的最后一课树为止。为了更好的说明书上述流程,图3示出了4结点二叉树的生成过程。也即,图3为4结点二叉树的生成序列,具体为:先生成Ψ3|0的第一棵树,然后按照上述步骤C1至C6生成Ψ3|0二叉树的同形状二叉树序列;接着以同样的方式生成Ψ2|1的同形状二叉树序列;再以同样的方式生成Ψ1|2的同形状二叉树序列;最后以同样的方式生成Ψ0|3的同形状二叉树序列。
B3、针对任一二叉树形状,获取上述二叉树形状所对应的同形状二叉树的集合,根据上述集合中各个二叉树的左子树的结点数由多至少的顺序进行排序,以得到上述二叉树形状在预设排序方式下的排序结果。
在本申请实施例中,在生成多个同形状二叉树序列之后,分别计算每个同形状二叉树序列的左子树的结点数,根据每个同形状二叉树序列的左子树的结点数的大小对上述多个同形状二叉树序列进行排序,将排序后的上述多个同形状二叉树序列作为上述n结点二叉树序列。其具体流程如下:
D1、先构成所有左子树有n-1个结点,右子树无结点的二叉树;
D2、再构成所有左子树有n-2个结点,右子树有1个结点的二叉树;
D3、再构成所有左子树有n-k个结点,右子树有k-1个结点的二叉树;
D4、直到最后构成所有棵无左子树,右子树有n-1个结点的二叉树为止。
如图4所示,当n=3时,B(3)=B(2)B(0)+B(1)B(1)+B(0)B(2)=2×1+1×1+1×2=5,也即,3结点二叉树中共有5棵二叉树,其排序可参见图4,先生成形如Ψ2|0的2棵二叉树,再生成1棵Ψ1|1的二叉树,最后再最后生成Ψ0|2的2课二叉树。同理可推出当n=4时存在14棵树;当n=5时存在42棵树,此处不再赘述。
可选地,在上述步骤102中,若上述数据不大于B(n),则根据上述数据及预设的二叉树生成方案,确定上述数据对应的二叉树形状及在上述二叉树形状中的位置,包括:
E1、设定上述数据为r,设定一整数变量为k,其中,k的初始值为1;
E2、计算(n-k)结点二叉树所包含的所有二叉树的数量,记为B(n-k);
E3、计算(k-1)结点二叉树所包含的所有二叉树的数量,记为B(k-1);
E4、检测r-B(n-k)*B(k-1)与0的数量关系;
E5、若r-B(n-k)*B(k-1)>0,则令r=r-B(n-k)*B(k-1),令k=k+1,并返回执行上述检测r-B(n-k)*B(k-1)与0的数量关系的步骤,直至r-B(n-k)*B(k-1)≤0;
E6、若r-B(n-k)*B(k-1)≤0,则根据当前n、k、r的取值确定上述数据对应的二叉树形状及在上述二叉树形状中的位置。
在本申请实施例中,可以以具体实例对上述过程进行说明。假定采用本申请实施例所提供的方法,生成了4结点二叉树,其具体形状及排序如图3所示。当步骤101所随机获得的数据为6时,由于6小于B(4),因而,可以在上述4结点二叉树中找到该数据6所对应的二叉树,具体流程为:首先,k的初始值为1,通过将r=6,k=1,n=4代入步骤E4中,可得到r-B(n-k)*B(k-1)为6-B(3)B(0)=6-5=1>0,此时,执行步骤E5,更新r的值和k的值,再次返回执行E4,将更新后的r=1,k=2,n=4再次带入步骤E4,可得到r-B(n-k)*B(k-1)为1-B(2)B(1)=1-2<0。此时,满足r-B(n-k)*B(k-1)≤0这一条件,可以根据当前的r、k、n的取值确定上述数据对应的二叉树形状及在上述二叉树形状中的位置。具体地,当r-B(n-k)*B(k-1)≤0时,上述根据当前n、k、r的取值确定上述数据对应的二叉树形状及在上述二叉树形状中的位置包括:
F1、若r-B(n-k)*B(k-1)=0,则确定上述二叉树形状为左树包含n-k+1个结点,右树包含k-2个结点,上述数据在上述二叉树形状中的位置为上述二叉树形状在预设排序方式下的第一棵树;
F2、若r-B(n-k)*B(k-1)<0,则确定上述二叉树形状为左树包含n-k个结点,右树包含k-1个结点,上述数据在上述二叉树形状中的位置为上述二叉树形状在预设排序方式下的第r棵树。
通过上述步骤F1及F2,可确定到r=1,k=2,n=4时,r-B(n-k)*B(k-1)<0,此时,上述二叉树形状为左树包含n-k个结点,右树包含k-1个结点,上述数据在上述二叉树形状中的位置为上述二叉树形状在预设排序方式下的第r棵树,也即上述数据6所对应的二叉树的形状为左数包含n-k=4-2=2个结点,右数包含k-1=2-1=1个结点,所对应的位置为该形状中的第一棵树,也即,上述数据6在4结点二叉树中,所对应的是Ψ2|1的第1棵树。
由上可见,通过本申请实施例,在获取到随机生成的、用于生成密钥的数据后,可基于该数据查找相应的二叉树,并将该对应的二叉树作为密钥使用,实现数据的加密/解密。本申请方案建立了随机数与二叉树之间的联系,从而使得用二叉树进行数据加密更加符合加密或者解密算法的安全机制,提高了根据随机数得到相应二叉树的算法效率,为利用多二叉树加密建立安全机制提供了依据。
应理解,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。
实施例二
图5示出了本申请实施例提供的密钥生成装置的结构框图,为了便于说明,仅示出了与本申请实施例相关的部分。该密钥生成装置5包括:随机数据获取单元51,形状位置确定单元52,目标二叉树获取单元53。
其中,随机数据获取单元51,用于获取用于生成密钥的数据,其中,上述数据是随机生成的;
形状位置确定单元52,用于根据上述数据及预设的二叉树生成方案,确定上述数据对应的二叉树形状及在上述二叉树形状中的位置;
目标二叉树获取单元53,用于基于上述二叉树形状及上述位置,获取目标二叉树,上述目标二叉树为上述数据对应的密钥。
可选地,上述二叉树生成方案具体为n结点二叉树生成方案,其中n>1且n为整数,上述密钥生成装置还包括:
二叉树数量计算单元,用于计算上述n结点二叉树所包含的所有二叉树的数量,记为B(n);
数据检测单元,用于检测上述数据是否大于B(n);
上述形状位置确定单元,具体用于若上述数据不大于B(n),则根据上述数据及预设的二叉树生成方案,确定上述数据对应的二叉树形状及在上述二叉树形状中的位置。
可选地,上述形状位置确定单元,包括:
数值初始设定子单元,用于设定上述数据为r,设定一整数变量为k,其中,k的初始值为1;
第一计算子单元,用于计算(n-k)结点二叉树所包含的所有二叉树的数量,记为B(n-k);
第二计算子单元,用于计算(k-1)结点二叉树所包含的所有二叉树的数量,记为B(k-1);
数量关系检测子单元,用于检测r-B(n-k)*B(k-1)与0的数量关系;
数值更新子单元,用于若r-B(n-k)*B(k-1)>0,则令r=r-B(n-k)*B(k-1),令k=k+1,并返回执行上述检测r-B(n-k)*B(k-1)与0的数量关系的步骤,直至r-B(n-k)*B(k-1)≤0;
二叉树形状位置确定子单元,用于若r-B(n-k)*B(k-1)≤0,则根据当前n、k、r的取值确定上述数据对应的二叉树形状及在上述二叉树形状中的位置。
可选地,上述二叉树形状位置确定子单元,具体用于当r-B(n-k)*B(k-1)=0时,确定上述二叉树形状为左树包含n-k+1个结点,右树包含k-2个结点,上述数据在上述二叉树形状中的位置为上述二叉树形状在预设排序方式下的第一棵树;当r-B(n-k)*B(k-1)<0时,确定上述二叉树形状为左树包含n-k个结点,右树包含k-1个结点,上述数据在上述二叉树形状中的位置为上述二叉树形状在预设排序方式下的第r棵树。
可选地,上述密钥生成装置还包括:
初始二叉树定义单元,用于定义同形状二叉树中的初始二叉树,其中,上述初始二叉树为除叶子结点外每个结点只有左子树的二叉树;
同形状二叉树集合获取单元,用于按照前序遍历的顺序,将上述初始二叉树从最接近叶子结点处开始把左子树转换成右子树,并在每次转换完成后存储转换后的二叉树,直到上述初始二叉树除叶子结点外每个结点只有右子树为止,将定义的上述初始二叉树及存储的上述转换后的二叉树的集合作为同形状二叉树的集合;
二叉树形状排序单元,用于针对任一二叉树形状,获取上述二叉树形状所对应的同形状二叉树的集合,根据上述集合中各个二叉树的左子树的结点数由多至少的顺序进行排序,以得到上述二叉树形状在预设排序方式下的排序结果。
由上可见,通过本申请实施例,上述密钥生成装置在获取到随机生成的、用于生成密钥的数据后,可基于该数据查找相应的二叉树,并将该对应的二叉树作为密钥使用,实现数据的加密/解密。本申请方案建立了随机数与二叉树之间的联系,从而使得用二叉树进行数据加密更加符合加密或者解密算法的安全机制,提高了根据随机数得到相应二叉树的算法效率,为利用多二叉树加密建立安全机制提供了依据。
实施例三
本申请实施例提供一种电子设备,请参阅图6,本申请实施例中的电子设备6包括:存储器61,一个或多个处理器60(图6中仅示出一个)及存储在存储器61上并可在处理器上运行的计算机程序62。其中:存储器61用于存储软件程序以及模块,处理器60通过运行存储在存储器61的软件程序以及单元,从而执行各种功能应用以及数据处理,以获取上述预设事件对应的资源。
具体地,处理器60通过运行存储在存储器61的上述计算机程序62时实现以下步骤:
获取用于生成密钥的数据,其中,上述数据是随机生成的;
根据上述数据及预设的二叉树生成方案,确定上述数据对应的二叉树形状及在上述二叉树形状中的位置;
基于上述二叉树形状及上述位置,获取目标二叉树,上述目标二叉树为上述数据对应的密钥。
假设上述为第一种可能的实施方式,则在第一种可能的实施方式作为基础而提供的第二种可能的实施方式中,上述二叉树生成方案具体为n结点二叉树生成方案,其中n>1且n为整数,则在上述根据上述数据及预设的二叉树生成方案,确定上述数据对应的二叉树形状及在上述二叉树形状中的位置之前,处理器60通过运行存储在存储器61的上述计算机程序62时还实现以下步骤:
计算上述n结点二叉树所包含的所有二叉树的数量,记为B(n);
检测上述数据是否大于B(n);
上述根据上述数据及预设的二叉树生成方案,确定上述数据对应的二叉树形状及在上述二叉树形状中的位置,包括:
若上述数据不大于B(n),则根据上述数据及预设的二叉树生成方案,确定上述数据对应的二叉树形状及在上述二叉树形状中的位置。
在上述第二种可能的实施方式作为基础而提供的第三种可能的实施方式中,若上述数据不大于B(n),则根据上述数据及预设的二叉树生成方案,确定上述数据对应的二叉树形状及在上述二叉树形状中的位置,包括:
设定上述数据为r,设定一整数变量为k,其中,k的初始值为1;
计算(n-k)结点二叉树所包含的所有二叉树的数量,记为B(n-k);
计算(k-1)结点二叉树所包含的所有二叉树的数量,记为B(k-1);
检测r-B(n-k)*B(k-1)与0的数量关系;
若r-B(n-k)*B(k-1)>0,则令r=r-B(n-k)*B(k-1),令k=k+1,并返回执行上述检测r-B(n-k)*B(k-1)与0的数量关系的步骤,直至r-B(n-k)*B(k-1)≤0;
若r-B(n-k)*B(k-1)≤0,则根据当前n、k、r的取值确定上述数据对应的二叉树形状及在上述二叉树形状中的位置。
在上述第三种可能的实施方式作为基础而提供的第四种可能的实施方式中,上述若r-B(n-k)*B(k-1)≤0,则根据当前n、k、r的取值确定上述数据对应的二叉树形状及在上述二叉树形状中的位置,包括:
若r-B(n-k)*B(k-1)=0,则确定上述二叉树形状为左树包含n-k+1个结点,右树包含k-2个结点,上述数据在上述二叉树形状中的位置为上述二叉树形状在预设排序方式下的第一棵树;
若r-B(n-k)*B(k-1)<0,则确定上述二叉树形状为左树包含n-k个结点,右树包含k-1个结点,上述数据在上述二叉树形状中的位置为上述二叉树形状在预设排序方式下的第r棵树。
在上述第一种可能的实施方式作为基础,或者上述第二种可能的实施方式作为基础,或者上述第三种可能的实施方式作为基础,或者上述第四种可能的实施方式作为基础而提供的第五种可能的实施方式中,处理器60通过运行存储在存储器61的上述计算机程序62时还实现以下步骤:
定义同形状二叉树中的初始二叉树,其中,上述初始二叉树为除叶子结点外每个结点只有左子树的二叉树;
按照前序遍历的顺序,将上述初始二叉树从最接近叶子结点处开始把左子树转换成右子树,并在每次转换完成后存储转换后的二叉树,直到上述初始二叉树除叶子结点外每个结点只有右子树为止,将定义的上述初始二叉树及存储的上述转换后的二叉树的集合作为同形状二叉树的集合;
针对任一二叉树形状,获取上述二叉树形状所对应的同形状二叉树的集合,根据上述集合中各个二叉树的左子树的结点数由多至少的顺序进行排序,以得到上述二叉树形状在预设排序方式下的排序结果。
上述电子设备6可以是智能手机、平板电脑、个人电脑等计算设备。应当理解,在本申请实施例中,所称处理器60可以是中央处理单元(Central Processing Unit,CPU),该处理器还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
存储器61可以包括只读存储器和随机存取存储器,并向处理器60提供指令和数据。存储器61的一部分或全部还可以包括非易失性随机存取存储器。例如,存储器61还可以存储设备类型的信息。
由上可见,通过本申请实施例,上述电子设备在获取到随机生成的、用于生成密钥的数据后,可基于该数据查找相应的二叉树,并将该对应的二叉树作为密钥使用,实现数据的加密/解密。本申请方案建立了随机数与二叉树之间的联系,从而使得用二叉树进行数据加密更加符合加密或者解密算法的安全机制,提高了根据随机数得到相应二叉树的算法效率,为利用多二叉树加密建立安全机制提供了依据。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将上述装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。实施例中的各功能单元、模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中,上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。另外,各功能单元、模块的具体名称也只是为了便于相互区分,并不用于限制本申请的保护范围。上述系统中单元、模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述或记载的部分,可以参见其它实施例的相关描述。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
在本申请所提供的实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的系统实施例仅仅是示意性的,例如,上述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通讯连接可以是通过一些接口,装置或单元的间接耦合或通讯连接,可以是电性,机械或其它的形式。
上述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
上述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,上述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,上述计算机程序包括计算机程序代码,上述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。上述计算机可读介质可以包括:能够携带上述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,RandomAccess Memory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,上述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括是电载波信号和电信信号。
以上上述实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围,均应包含在本申请的保护范围之内些接口,装置或单元的间接耦合或通讯连接,可以是电性,机械或其它的形式。
上述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
上述集成的模块/单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,上述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。。其中,上述计算机程序包括计算机程序代码,上述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。上述计算机可读介质可以包括:能够携带上述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,上述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括是电载波信号和电信信号。
以上所述实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围,均应包含在本申请的保护范围之内。

Claims (4)

1.一种密钥生成方法,其特征在于,包括:
获取用于生成密钥的数据,其中,所述数据是随机生成的;
根据所述数据及预设的二叉树生成方案,确定所述数据对应的二叉树形状及在所述二叉树形状中的位置;
基于所述二叉树形状及所述位置,获取目标二叉树,所述目标二叉树为所述数据对应的密钥;
所述二叉树生成方案具体为n结点二叉树生成方案,其中n>1且n为整数,则在所述根据所述数据及预设的二叉树生成方案,确定所述数据对应的二叉树形状及在所述二叉树形状中的位置之前,所述密钥生成方法还包括:
计算所述n结点二叉树所包含的所有二叉树的数量,记为B(n);
检测所述数据是否大于B(n);
所述根据所述数据及预设的二叉树生成方案,确定所述数据对应的二叉树形状及在所述二叉树形状中的位置,包括:
若所述数据不大于B(n),则:
设定所述数据为r,设定一整数变量为k,其中,k的初始值为1;
计算(n-k)结点二叉树所包含的所有二叉树的数量,记为B(n-k);
计算(k-1)结点二叉树所包含的所有二叉树的数量,记为B(k-1);
检测r-B(n-k)*B(k-1)与0的数量关系;
若r-B(n-k)*B(k-1)>0,则令r=r-B(n-k)*B(k-1),令k=k+1,并返回执行所述检测r-B(n-k)*B(k-1)与0的数量关系的步骤,直至r-B(n-k)*B(k-1)≤0;
若r-B(n-k)*B(k-1)=0,则确定所述二叉树形状为左树包含n-k+1个结点,右树包含k-2个结点,所述数据在所述二叉树形状中的位置为所述二叉树形状在预设排序方式下的第一棵树;
若r-B(n-k)*B(k-1)<0,则确定所述二叉树形状为左树包含n-k个结点,右树包含k-1个结点,所述数据在所述二叉树形状中的位置为所述二叉树形状在预设排序方式下的第r棵树;
所述密钥生成方法还包括:
定义同形状二叉树中的初始二叉树,其中,所述初始二叉树为除叶子结点外每个结点只有左子树的二叉树;
按照前序遍历的顺序,将所述初始二叉树从最接近叶子结点处开始把左子树转换成右子树,并在每次转换完成后存储转换后的二叉树,直到所述初始二叉树除叶子结点外每个结点只有右子树为止,将定义的所述初始二叉树及存储的所述转换后的二叉树的集合作为同形状二叉树的集合;
针对任一二叉树形状,获取所述二叉树形状所对应的同形状二叉树的集合,根据所述集合中各个二叉树的左子树的结点数由多至少的顺序进行排序,以得到所述二叉树形状在预设排序方式下的排序结果。
2.一种密钥生成装置,其特征在于,包括:
随机数据获取单元,用于获取用于生成密钥的数据,其中,所述数据是随机生成的;
形状位置确定单元,用于根据所述数据及预设的二叉树生成方案,确定所述数据对应的二叉树形状及在所述二叉树形状中的位置;
目标二叉树获取单元,用于基于所述二叉树形状及所述位置,获取目标二叉树,所述目标二叉树为所述数据对应的密钥;
所述二叉树生成方案具体为n结点二叉树生成方案,其中n>1且n为整数,所述密钥生成装置还包括:
二叉树数量计算单元,用于计算所述n结点二叉树所包含的所有二叉树的数量,记为B(n);
数据检测单元,用于检测所述数据是否大于B(n);
所述形状位置确定单元,具体用于若所述数据不大于B(n),则根据所述数据及预设的二叉树生成方案,确定所述数据对应的二叉树形状及在所述二叉树形状中的位置;
所述形状位置确定单元,包括:
数值初始设定子单元,用于设定所述数据为r,设定一整数变量为k,其中,k的初始值为1;
第一计算子单元,用于计算(n-k)结点二叉树所包含的所有二叉树的数量,记为B(n-k);
第二计算子单元,用于计算(k-1)结点二叉树所包含的所有二叉树的数量,记为B(k-1);
数量关系检测子单元,用于检测r-B(n-k)*B(k-1)与0的数量关系;
数值更新子单元,用于若r-B(n-k)*B(k-1)>0,则令r=r-B(n-k)*B(k-1),令k=k+1,并返回执行上述检测r-B(n-k)*B(k-1)与0的数量关系的步骤,直至r-B(n-k)*B(k-1)≤0;
二叉树形状位置确定子单元,用于当r-B(n-k)*B(k-1)=0时,确定所述二叉树形状为左树包含n-k+1个结点,右树包含k-2个结点,所述数据在所述二叉树形状中的位置为所述二叉树形状在预设排序方式下的第一棵树;当r-B(n-k)*B(k-1)<0时,确定所述二叉树形状为左树包含n-k个结点,右树包含k-1个结点,所述数据在所述二叉树形状中的位置为所述二叉树形状在预设排序方式下的第r棵树;
所述密钥生成装置还包括:
初始二叉树定义单元,用于定义同形状二叉树中的初始二叉树,其中,所述初始二叉树为除叶子结点外每个结点只有左子树的二叉树;
同形状二叉树集合获取单元,用于按照前序遍历的顺序,将所述初始二叉树从最接近叶子结点处开始把左子树转换成右子树,并在每次转换完成后存储转换后的二叉树,直到所述初始二叉树除叶子结点外每个结点只有右子树为止,将定义的所述初始二叉树及存储的所述转换后的二叉树的集合作为同形状二叉树的集合;
二叉树形状排序单元,用于针对任一二叉树形状,获取所述二叉树形状所对应的同形状二叉树的集合,根据所述集合中各个二叉树的左子树的结点数由多至少的顺序进行排序,以得到所述二叉树形状在预设排序方式下的排序结果。
3.一种电子设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1所述方法的步骤。
4.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1所述方法的步骤。
CN201811535286.8A 2018-12-14 2018-12-14 一种密钥生成方法、密钥生成装置及电子设备 Active CN109787755B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201811535286.8A CN109787755B (zh) 2018-12-14 2018-12-14 一种密钥生成方法、密钥生成装置及电子设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201811535286.8A CN109787755B (zh) 2018-12-14 2018-12-14 一种密钥生成方法、密钥生成装置及电子设备

Publications (2)

Publication Number Publication Date
CN109787755A CN109787755A (zh) 2019-05-21
CN109787755B true CN109787755B (zh) 2021-11-12

Family

ID=66496994

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811535286.8A Active CN109787755B (zh) 2018-12-14 2018-12-14 一种密钥生成方法、密钥生成装置及电子设备

Country Status (1)

Country Link
CN (1) CN109787755B (zh)

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7095850B1 (en) * 2000-09-29 2006-08-22 Cisco Technology, Inc. Encryption method and apparatus with forward secrecy and random-access key updating method
EP2107711A1 (en) * 2008-03-03 2009-10-07 Fujitsu Ltd. Method and apparatus for digital signature authentication, and computer product
CN101582760A (zh) * 2008-05-16 2009-11-18 中国科学院研究生院 一种基于树结构的密钥加密存储方法
CN102413465A (zh) * 2012-01-04 2012-04-11 西安电子科技大学 基于MIPv6的安全组播密钥管理方法
CN103414552A (zh) * 2013-07-31 2013-11-27 深圳信息职业技术学院 一种利用二叉树遍历方式进行加密、解密方法及装置
CN106471558A (zh) * 2014-07-02 2017-03-01 三菱电机株式会社 矩阵生成装置、矩阵生成方法和矩阵生成程序
CN107835175A (zh) * 2017-11-09 2018-03-23 深圳市云盾科技有限公司 采用平衡二叉树算法的网络连接跟踪方法
CN108075879A (zh) * 2016-11-10 2018-05-25 中国移动通信集团安徽有限公司 一种数据加密和解密的方法、装置及系统

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101133262B1 (ko) * 2010-04-08 2012-04-05 충남대학교산학협력단 강인한 scada시스템의 하이브리드 키 관리방법 및 세션키 생성방법

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7095850B1 (en) * 2000-09-29 2006-08-22 Cisco Technology, Inc. Encryption method and apparatus with forward secrecy and random-access key updating method
EP2107711A1 (en) * 2008-03-03 2009-10-07 Fujitsu Ltd. Method and apparatus for digital signature authentication, and computer product
CN101582760A (zh) * 2008-05-16 2009-11-18 中国科学院研究生院 一种基于树结构的密钥加密存储方法
CN102413465A (zh) * 2012-01-04 2012-04-11 西安电子科技大学 基于MIPv6的安全组播密钥管理方法
CN103414552A (zh) * 2013-07-31 2013-11-27 深圳信息职业技术学院 一种利用二叉树遍历方式进行加密、解密方法及装置
CN106471558A (zh) * 2014-07-02 2017-03-01 三菱电机株式会社 矩阵生成装置、矩阵生成方法和矩阵生成程序
CN108075879A (zh) * 2016-11-10 2018-05-25 中国移动通信集团安徽有限公司 一种数据加密和解密的方法、装置及系统
CN107835175A (zh) * 2017-11-09 2018-03-23 深圳市云盾科技有限公司 采用平衡二叉树算法的网络连接跟踪方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
"基于关系数据库表树的数据结构研究";魏勇;《深圳信息职业技术学院学报》;20060930;第4卷(第3期);全文 *

Also Published As

Publication number Publication date
CN109787755A (zh) 2019-05-21

Similar Documents

Publication Publication Date Title
CN109445834B (zh) 基于抽象语法树的程序代码相似性快速比较方法
US20200285634A1 (en) System for data sharing platform based on distributed data sharing environment based on block chain, method of searching for data in the system, and method of providing search index in the system
CN110019876B (zh) 数据查询方法、电子设备及存储介质
Fraigniaud et al. Local MST computation with short advice
CN104937599A (zh) 数据解析装置及其方法
CN115051798B (zh) 一种随机数生成方法、装置、电子设备及存储介质
US11531778B2 (en) Privacy data reporting method and apparatus, and storage medium
JP2017526081A (ja) 2次元フィルタの生成方法、クエリ方法、及び装置
CN110768785A (zh) 一种编、解码方法、相关装置及计算机设备
Davoodi et al. Encoding range minima and range top-2 queries
CN110554877A (zh) 一种json数据解析方法、装置、设备及储存介质
CN110929173A (zh) 同人识别方法、装置、设备及介质
CN108628907A (zh) 一种用于基于Aho-Corasick的Trie树多关键词匹配的方法
CN110019400B (zh) 数据存储方法、电子设备及存储介质
CN109787755B (zh) 一种密钥生成方法、密钥生成装置及电子设备
CN107342857B (zh) 分组方法及装置
CN111159730B (zh) 数据处理方法、查询方法、装置、电子设备和系统
CN115714644B (zh) 一种随机数生成方法及装置
CN115277239B (zh) 数据库数据的加密方法及装置
CN106502627B (zh) 一种伪随机数种子生成方法
CN112559497B (zh) 一种数据处理方法、一种信息传输方法、装置及电子设备
CN110071828A (zh) 告警方法、装置、设备及存储介质
CN104809146B (zh) 用于确定对象在对象序列中的索引的系统和方法
CN112883301A (zh) 基于55进制的短链接生成方法、装置及存储介质
Mehrafsa et al. Vectorising k-truss decomposition for simple multi-core and simd acceleration

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