公开/公告号CN103414552A
专利类型发明专利
公开/公告日2013-11-27
原文格式PDF
申请/专利权人 深圳信息职业技术学院;
申请/专利号CN201310329129.2
发明设计人 魏勇;
申请日2013-07-31
分类号H04L9/06;
代理机构深圳中一专利商标事务所;
代理人张全文
地址 518172 广东省深圳市龙岗区龙翔大道2188号
入库时间 2024-02-19 21:14:32
法律状态公告日
法律状态信息
法律状态
2016-09-28
授权
授权
2013-12-18
实质审查的生效 IPC(主分类):H04L9/06 申请日:20130731
实质审查的生效
2013-11-27
公开
公开
技术领域
本发明属于数据加密技术领域,尤其涉及一种利用二叉树遍历方式进行加 密、解密方法及装置。
背景技术
公共网络上的通信容易被未经授权的第三方读取。数据在网络传输过程中 的保密性是网络安全中重点要考虑的问题之一,数据加密与解密是解决这一问 题较好的办法。
在公共网络传输数据时使用加密算法对数据进行加密,在加密状态下传输 数据,然后由预定的接收方对数据进行解密。即便第三方截获了加密的数据, 也无法还原真实的数据,所以数据加密可以保护数据,防止监听攻击。
加密技术是对信息进行编码和解码的技术,编码是把原来可读信息(又称明 文)译成代码形式(又称密文),其逆过程就是解码(解密)。加密技术的要点是加 密算法,加密算法可以分为对称加密、不对称加密和不可逆加密三类算法。
私钥加密算法使用单个私钥来加密和解密数据。私钥加密又称为对称加密, 因为同一密钥既用于加密又用于解密,私钥加密算法非常快(与公钥算法相比), 特别适用于对较大的数据流执行加密转换。
然而,现有私钥加密算法加密过程繁琐且安全性不够高,降低了数据的加 密效率,为便于说明,以现有私钥加密算法中高级加密标准(Advanced Encryption Standard,AES)为例,AES算法在加密过程中要要经过AddRoundKey (异或)、SubBytes(查表替换)、ShiftRows(按字节循环左移)、MixColumns(矩阵 乘法)等过程,因此加密的加密过程繁琐,且密钥只有1035数量级,因此安全性 不够高。
发明内容
本发明实施例的目的在于提供一种利用二叉树遍历方式进行利用二叉树遍 历方式进行加密方法,旨在现有私钥加密算法加密过程繁琐且安全性不够高, 降低了数据的加密效率的问题。
本发明实施例是这样实现的,一种利用二叉树遍历方式进行加密加密方法, 包括:
获取明文的数据序列以及数据序列中的N个元素,所述N为大于等于1 的整数;
根据所述数据序列中元素的个数N,获取一棵具有N个节点的序列二叉树 作为密钥;
根据预设的明文遍历方式,将所述数据序列中的N个元素分别装载至所述 序列二叉树的N个节点中;
采用与所述明文遍历方式不同的遍历方式作为密文遍历方式;
根据所述密文遍历方式遍历所述序列二叉树,生成加密数据序列,以完成 明文的加密。
本发明实施例的另一目的在于提供一种利用二叉树遍历方式进行解密方 法,包括:
获取加密数据序列以及所述加密数据序列中的N个元素,所述N为大于等 于1的整数;
获取密钥,所述密钥为一棵具有N个节点的序列二叉树;
根据密文遍历方式,将所述加密数据序列中的N个元素分别装载至所述序 列二叉树的N个节点中;
根据预设的明文遍历方式,遍历所述序列二叉树,生成未加密的数据序列, 以还原明文。
本发明实施例的另一目的在于提供一种利用二叉树遍历方式进行加密装 置,包括:
第一获取单元,获取明文的数据序列以及数据序列中的N个元素,所述N 为大于等于1的整数;
第二获取单元,用于根据所述数据序列中元素的个数N,获取一棵具有N 个节点的序列二叉树作为密钥;
第一装载单元,用于根据预设的明文遍历方式,将所述数据序列中的N个 元素分别装载至所述序列二叉树的N个节点中;
采用单元,用于采用与所述明文遍历方式不同的遍历方式作为密文遍历方 式;
加密单元,用于根据所述密文遍历方式遍历所述序列二叉树,生成加密数 据序列,以完成明文的加密。
本发明实施例的另一目的在于提供一种利用二叉树遍历方式进行解密装 置,包括:
第三获取单元,用于获取加密数据序列以及所述加密数据序列中的N个元 素,所述N为大于等于1的整数;
第四获取单元,用于获取密钥,所述密钥为一棵具有N个节点的序列二叉 树;
第二装载单元,用于根据密文遍历方式,将所述加密数据序列中的N个元 素分别装载至所述序列二叉树的N个节点中;
还原单元,用于采用根据预设的明文遍历方式,遍历所述序列二叉树,生 成未加密的数据序列,以还原明文。
在本发明实施例中,采用与所述明文遍历方式不同的遍历方式作为密文遍 历方式;根据所述密文遍历方式遍历所述用于加密的序列二叉树,生成加密数 据序列,以完成明文的加密,以简化了加密过程繁琐,增强了安全性,提高了 数据的加密效率。
附图说明
图1是本发明实施例提供的数据加密方法的实现流程图;
图2是本发明实施例提供的序列二叉树数量较佳的样例图;
图3是本发明实施例提供的生成的二叉树较佳的样例图;
图4是本发明实施例提供的数据解密方法的实现流程图;
图5是本发明实施例提供的数据加密装置的结构框图;
图6是本发明实施例提供的数据解密装置的结构框图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实 施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅 仅用以解释本发明,并不用于限定本发明。
在本发明实施例中,采用与所述明文遍历方式不同的遍历方式作为密文遍 历方式;根据所述密文遍历方式遍历所述用于加密的序列二叉树,生成加密数 据序列,以完成明文的加密,以简化了加密过程繁琐,增强了安全性,提高了 数据的加密效率。
实施例一
图1示出了本发明实施例提供的一种利用二叉树遍历方式进行加密方法的 实现流程,详述如下:
在步骤S101中,获取明文的数据序列以及数据序列中的N个元素,所述 N为大于等于1的整数;
在本实施例中,获取明文的数据序列,可先以二进制方式存储将需要加密 的明文,以将明文转换成数据序列,从而在本地中,可获取到明文的数据序列 中的N个元素,其中,N为大于等于1的整数。
在本实施例中,获取明文的数据序列记录存储在本地预设的文件中,便于 后续调用。
在步骤S102中,根据所述数据序列中元素的个数N,获取一棵具有N个 节点的序列二叉树作为密钥;
在本实施例中,根据所述数据序列中元素的个数N,随机获取一棵具有N 个节点的序列二叉树作为密钥。
在本实施例中,序列二叉树为遍历结果为一个数据序列的二叉树。
为便于说明,图2示出了遍历结果为ABCD的以及有4个结点的二叉树。 该二叉树的前序遍历是ABCD,所以称该序列二叉树为序列ABCD的前序二叉 树。序列ABCD还存在中序二叉树、后序二叉树等。
在本实施例中,序列二叉树由根、左子树、右子树组成。无论是前序遍历、 中序遍历还是后序遍历,遍历序列都由根、左子树、右子树组成。
在本实施例中,为便于说明,以n个元素的数据序列为例,任意指定一棵 有n个结点的二叉树,其中,n为大于等于1的整数,B(n)为序列二叉树数量。 此外,无论是前序遍历、中序遍历还是后序遍历,遍历序列都由根、左子树、 右子树组成,只是它们的顺序有区别而已,序列二叉树数量B(n)并不会改变, 如图2所示。
进一步地,为便于说明,以n个元素的数据序列,前序列二叉树为例,生 成前序二叉树的过程应该是先生成根,再生成左子树,再生成右子树。具体方 法是:
①生成二叉树的根
从流中读到的第一个结点作为根。
②生成二叉树的左子树
从剩下的n-1个结点中读取k(0<=k<=n-1)个结点,按照前序序列作为该二 叉树的左子树。
③生成二叉树的右子树
把余下的n-k-1个结点按照前序序列作为该二叉树的右子树。
按照以上步骤,当左子树有0个结点时候存在B(0)个二叉树;此时右子树 有n-1个结点,可以有B(n-1)个二叉树。按照剩法原理,存在B(0)B(n-1)棵二叉 树。
当左子树有1个结点时候存在B(1)个二叉树;此时右子树有n-2个结点, 可以有B(n-2)个二叉树。按照剩法原理,存在B(1)B(n-2)棵二叉树。 … …
当左子树有k(0<=k<=n-1)个结点时候存在B(k)个二叉树;此时右子树有 n-k-1个结点,可以有B(n-k-1)个二叉树。按照剩法原理,存在B(k)B(n-k-1)棵 二叉树。
再由加法原理,求得B(n):
例如当n=3时,B(3)=B(0)B(2)+B(1)B(1)+B(2)B(0)=1×2+1×1+2 ×1=5
其生成的5棵二叉树,如图3所示。
当n=4时,B(4)=B(0)B(3)+B(1)B(2)+B(2)B(1)+B(3)B(0)=1×5+1×2+2 ×1+5×1=14
当n=5时,B(5)=B(0)B(4)+B(1)B(3)+B(2)B(2)+B(3)B(1)+B(4)B(0)=1× 14+1×5+2×2+5×1+14×1=42
下面代码段用数组方式计算求n和B(n)的关系:
double sum=0;
double b[]=new double[129];./字节双精度
b[0]=1;b[1]=1;b[2]=2;
for(int n=3;n<=128;n++){/n的取值从3开始,当n不大于128时, 执行循环。
当n=64时,B64=3.684791698758167E35
当n=128时,B128=128:4.4718285453094634E73=4.4718285453094634× 1073种密钥。
在本实施例中,对比AES算法,当密钥长度为128时,AES算法有3.4× 1038个密钥,而序列二叉树,当位数n=128时候,存在B(n)=4.4718285453094634 ×1073种密钥,密钥的数量远远高于AES密钥1038数量级,因此,增加了密钥 的数量,使得明文的加密更具有安全性,从而解决了现有私钥加密算法加密安 全性不够高的问题。
在步骤S103中,根据预设的明文遍历方式,将所述数据序列中的N个元 素分别装载至所述序列二叉树的N个节点中;
在本实施例中,预先在遍历方式中,选取一个遍历方式作为预设的明文遍 历方式。
在步骤S104中,采用与所述明文遍历方式不同的遍历方式作为密文遍历 方式;
在本实施例中,采用与所述明文遍历方式不同的遍历方式作为密文遍历方 式,具体地,可向每一种遍历方式分配唯一的遍历标识,在遍历方式中,根据 遍历标识剔除明文遍历方式,在剩下的遍历方式中,选择一个遍历方式作为密 文遍历方式。
在步骤S105中,根据所述密文遍历方式遍历所述序列二叉树,生成加密 数据序列,以完成明文的加密。
在本实施例中,所述明文遍历方式\密文遍历方式,包括先访问根结点,再 遍历左子树,最后遍历右子树的遍历方式、先遍历左子树,再访问根结点,最 后遍历右子树的遍历方式、先遍历左子树,再遍历右子树,最后访问根结点的 遍历方式、先访问根结点,再遍历右子树,最后遍历左子树的遍历方式、先遍 历右子树,再访问根结点,最后遍历左子树的遍历方式、先遍历右子树,再遍 历左子树,最后访问根结点的遍历方式中的至少一种遍历方式。
在本实施例中,根据密文遍历方式遍历序列二叉树,生成加密数据序列, 以完成明文的加密,由于序列二叉树的数量多,随机选取一个序列二叉树作为 密钥,将所述数据序列中的N个元素分别装载至序列二叉树的N个节点中,就 具有多种可能,且采用密文遍历方式的方式,改变了原数据序列中各元素的排 列顺序,因此,在后续的解密中,需要获取用于加密的序列二叉树,将该各元 素的排列顺序调整为原数据序列,才能完成解密。
在本实施例中,序列二叉树进行加密/解密实质上就是对序列二叉树的遍历 过程,所以相比一些私钥加密算法而言序列二叉树进行加密/解密算法简单,且 对比AES算法,当密钥长度为128时,有3.4×1038个密钥,而序列二叉树,当 位数n=128时候,存在B(n)=4.4718285453094634×1073种密钥,密钥的数量 远远高于AES密钥1038数量级。在实际应用中,即使采用密钥穷尽搜索的方法 进行获取密钥,也会由于组合个数过多,而增加破解密钥的难度,使得明文的 加密更具有安全性。
作为本发明的一个优选实施例,可对获取到的明文的数据序列进行分段, 分成各个数据序列,并每个数据序列随机选取一个序列二叉树,通过该序列二 叉树对序列进行加密,以进一步提高加密的安全性。
实施例二
图4示出了本发明实施例提供的一种利用二叉树遍历方式进行加密方法的 实现流程,详述如下:
在步骤S401中,获取加密数据序列以及所述加密数据序列中的N个元素, 所述N为大于等于1的整数;
在本实施例中,获取加密数据序列,具体地,可通过现有的任一种网络, 接收到加密数据序列。
在本实施例中,获取明文的加密数据序列记录存储在本地预设的文件中, 便于后续调用。
在步骤S402中,获取密钥,所述密钥为一棵具有N个节点的序列二叉树;
在本实施例中,获取密钥,密钥为一棵具有N个节点的序列二叉树,获取 的方式可通过现有技术的任一种方式获取,在此不做限制,如通过网盘下载, 通过分布式存储系统认证下载的方式获取。
在本实施例中,获取到用于加密的序列二叉树后,将用于加密的序列二叉 树记录存储在本地的预设位置中。
在本实施例中,可选地,可将密钥存储在本地的预设位置中,便于后续直 接获取。
在本实施例中,需要进行说明的是,实施例一与实施例二中采用的是对称 加密,用于解密的序列二叉树与实施例一中的用于加密的序列二叉树相同,该 用于加密的序列二叉树既用于加密又用于解密,由于加密和解密的速度快,因 此特别适用于对较大的数据流执行加密转换。
在步骤S403中,根据密文遍历方式,将所述加密数据序列中的N个元素 分别装载至所述序列二叉树的N个节点中;
在本实施例中,调用预先存储的用于加密的序列二叉树,根据密文遍历方式, 将加密数据序列中的N个元素分别装载至所述序列二叉树的N个节点中。
在本实施例中,需要进行说明的是,本实施例中的密文遍历方式与实施例 一中的密文遍历方式相同,该密文遍历方式既用于加密又用于解密。
在步骤S404中,按明文遍历方式遍历用于加密的序列二叉树,生成未加 密的数据序列,以还原明文。
在本实施例中,所述明文遍历方式\密文遍历方式,包括先访问根结点,再 遍历左子树,最后遍历右子树的遍历方式、先遍历左子树,再访问根结点,最 后遍历右子树的遍历方式、先遍历左子树,再遍历右子树,最后访问根结点的 遍历方式、先访问根结点,再遍历右子树,最后遍历左子树的遍历方式、先遍 历右子树,再访问根结点,最后遍历左子树的遍历方式、先遍历右子树,再遍 历左子树,最后访问根结点的遍历方式中的至少一种遍历方式。
在本实施例中,需要进行说明的是,本实施例中的明文遍历方式与实施例 一中的明文遍历方式相同,该明文遍历方式既用于加密又用于解密。
在本实施例中,按明文遍历方式遍历用于加密的序列二叉树,提取出数据 序列中的各个元素,生成未加密的数据序列,以还原明文。由于采用与实施例 一中相同的明文遍历方式,还原数据序列中各元素的排列顺序,从而可生成未 加密的数据序列,可以完成对明文的解密。
实施例三
图5示出了本发明实施例提供的一种利用二叉树遍历方式进行加密装置的 结构框图,该装置可以运行于各种终端,包括但不限于移动电话、口袋计算机 (Pocket Personal Computer,PPC)、掌上电脑、计算机、笔记本电脑、个人数 字助理(Personal Digital Assistant,PDA)、MP4、MP3等。为了便于说明,仅 示出了与本实施例相关的部分。
参照图5,该利用二叉树遍历方式进行加密装置,包括:
第一获取单元51,用于第一获取单元,获取明文的数据序列以及数据序列 中的N个元素,所述N为大于等于1的整数;
第二获取单元52,用于根据所述数据序列中元素的个数N,获取一棵具有 N个节点的序列二叉树作为密钥;
第一装载单元53,用于根据预设的明文遍历方式,将所述数据序列中的N 个元素分别装载至所述序列二叉树的N个节点中;
采用单元54,用于采用与所述明文遍历方式不同的遍历方式作为密文遍历 方式;
加密单元55,用于根据所述密文遍历方式遍历所述序列二叉树,生成加密 数据序列,以完成明文的加密。
进一步地,在该利用二叉树遍历方式进行加密装置中,所述第二获取单元 还用于随机获取一棵具有N个节点的序列二叉树作为密钥。
进一步地,在该数据加密装置中,所述明文遍历方式\密文遍历方式,包括 先访问根结点,再遍历左子树,最后遍历右子树的遍历方式、先遍历左子树, 再访问根结点,最后遍历右子树的遍历方式、先遍历左子树,再遍历右子树, 最后访问根结点的遍历方式、先访问根结点,再遍历右子树,最后遍历左子树 的遍历方式、先遍历右子树,再访问根结点,最后遍历左子树的遍历方式、先 遍历右子树,再遍历左子树,最后访问根结点的遍历方式中的至少一种遍历方 式。
图6示出了本发明实施例提供的一种利用二叉树遍历方式进行解密装置的 结构框图,该装置可以运行于各种终端,包括但不限于移动电话、口袋计算机 (Pocket Personal Computer,PPC)、掌上电脑、计算机、笔记本电脑、个人数 字助理(Personal Digital Assistant,PDA)、MP4、MP3等。为了便于说明,仅 示出了与本实施例相关的部分。
参照图6,该利用二叉树遍历方式进行解密装置,包括:
第三获取单元61,用于获取加密数据序列以及所述加密数据序列中的N个 元素,所述N为大于等于1的整数;
第四获取单元62,用于获取密钥,所述密钥为一棵具有N个节点的序列二 叉树;
第二装载单元63,用于根据密文遍历方式,将所述加密数据序列中的N个 元素分别装载至所述序列二叉树的N个节点中;
还原单元64,用于采用根据预设的明文遍历方式,遍历所述序列二叉树, 生成未加密的数据序列,以还原明文。
具体地,在该利用二叉树遍历方式进行解密装置中,所述明文遍历方式\ 密文遍历方式,包括先访问根结点,再遍历左子树,最后遍历右子树的遍历方 式、先遍历左子树,再访问根结点,最后遍历右子树的遍历方式、先遍历左子 树,再遍历右子树,最后访问根结点的遍历方式、先访问根结点,再遍历右子 树,最后遍历左子树的遍历方式、先遍历右子树,再访问根结点,最后遍历左 子树的遍历方式、先遍历右子树,再遍历左子树,最后访问根结点的遍历方式 中的至少一种遍历方式。
在本发明实施例中,采用与所述明文遍历方式不同的遍历方式作为密文遍 历方式;根据所述密文遍历方式遍历所述用于加密的序列二叉树,生成加密数 据序列,以完成明文的加密,以简化了加密过程繁琐,增强了安全性,提高了 数据的加密效率。
本发明实施例提供的装置可以应用在前述对应的方法实施例一、二中,详 情参见上述实施例一、二的描述,在此不再赘述。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发 明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明 的保护范围之内。
机译: 用于对经过mac类型编码的信号进行简要和解密的方法和设备以及通过围绕一或两个点的圆形排列进行加密的信号和编码设备以及以与加密相似的方式进行操作的方法和设备
机译: 加密和存储的方法以及用于对数据流进行加密的电路,用于存储数据的设备,该方法可用于对数据加密的媒体进行解密,用于检索和传输存储的数据的方法,用于对criptogr视听数据Afados进行解密的电路,用于检索和存储数据的设备传输视听数据,计算机程序的产品,数据和计算机程序。
机译: 通过一个或两个截止点的循环置换对经过MAC类型编码和加密的信号进行解码和解密的方法和装置,以及以类似方式工作的编码和加密装置