数据的加密方法及装置、数据的解密方法及装置制造方法及图纸

技术编号:22330542 阅读:27 留言:0更新日期:2019-10-19 12:21
本发明专利技术公开了一种数据的加密方法及装置、数据的解密方法及装置。其中,该方法包括:获取n+1个明文数据m0,m1,……,mn以及n+1个密钥数据k0,k1,……,kn,其中,所述n+1个明文数据与所述n+1个密钥数据一一对应;以(k0,m0),(k1,m1),……,(kn,mn)为n+1个点坐标生成n次多项式F(x)=a0+a1*x+a2*x

【技术实现步骤摘要】
数据的加密方法及装置、数据的解密方法及装置
本专利技术涉及信息安全领域,具体而言,涉及一种数据的加密方法及装置、数据的解密方法及装置。
技术介绍
目前的对称加密算法是双方保持一个相同密钥进行同样的加解密算法来传递信息,但是面临对称密钥的管理难题;非对称加密可以帮助对称加密解决密钥管理的问题,但是加密速度和效率仍需提高;在对称加密时,每个消息进行分组或序列加密,密文长度与明文相等,传递消息的效率较低,需要能有算法可以进行快速加密和消息的快速传递。针对上述的问题,目前尚未提出有效的解决方案。
技术实现思路
本专利技术实施例提供了一种数据的加密方法及装置、数据的解密方法及装置,以至少解决多方交互时加密数据传输过程中传输效率较低的技术问题。根据本专利技术实施例的一个方面,提供了一种数据的加密方法,包括:获取n+1个明文数据m0,m1,……,mn以及n+1个密钥数据k0,k1,……,kn,其中,所述n+1个明文数据与所述n+1个密钥数据一一对应,n为正整数;以(k0,m0),(k1,m1),……,(kn,mn)为n+1个点坐标生成n次多项式F(x)=a0+a1*x+a2*x2+…+an*xn,其中,所述n+1个点落在所述n次多项式所表示的曲线上;将所述n次多项式的系数[a0,a1,a2…an]确定为所述n+1个明文数据所对应的密文数据。根据本专利技术实施例的另一方面,还提供了一种数据的解密方法,包括:获取发送端发送的密文数据[a0,a1,a2…an]和密钥数据ki,其中,所述密文数据[a0,a1,a2…an]为以(k0,m0),(k1,m1),……,(kn,mn)为n+1个点坐标生成的n次多项式F(x)=a0+a1*x+a2*x2+…+an*xn的多项式系数,m0,m1,……,mn为n+1个明文数据,k0,k1,……,kn为n+1个密钥数据,所述n+1个明文数据与所述n+1个密钥数据一一对应,所述n+1个点落在所述n次多项式所表示的曲线上,n为正整数;以密文数据[a0,a1,a2…an]为多项式的系数生成n次多项式F(x)=a0+a1*x+a2*x2+…+an*xn;将所述密钥数据ki作为x值代入所述n次多项式F(ki)=a0+a1*ki+a2*ki2+…+an*kin,并将得到的F(ki)确定为所述密钥数据ki所对应的明文数据mi,其中,0≤i≤n,i为整数。根据本专利技术实施例的另一方面,还提供了一种数据的加密装置,包括:第一获取模块,用于获取n+1个明文数据m0,m1,……,mn以及n+1个密钥数据k0,k1,……,kn,其中,所述n+1个明文数据与所述n+1个密钥数据一一对应,n为正整数;第一生成模块,用于以(k0,m0),(k1,m1),……,(kn,mn)为n+1个点坐标生成n次多项式F(x)=a0+a1*x+a2*x2+…+an*xn,其中,所述n+1个点落在所述n次多项式所表示的曲线上;第一确定模块,用于将所述n次多项式的系数[a0,a1,a2…an]确定为所述n+1个明文数据所对应的密文数据。可选地,第一获取模块包括:第一获取单元,用于获取待传输的n+1个初始数据;扩展单元,用于将所述n+1个初始数据中每个初始数据扩展为数据长度为目标长度的所述n+1个明文数据m0,m1,……,mn;第一生成单元,用于生成与所述n+1个明文数据m0,m1,……,mn一一对应的所述n+1个密钥数据k0,k1,……,kn。可选地,扩展单元包括:第一扩展子单元,用于在所述n+1个初始数据中数据长度最长的一个初始数据hp的数据长度大于或者等于所述目标长度的情况下,在所述n+1个初始数据中除hp之外的其他n个初始数据h0,……,hp-1,hp+1……,hn之后补充第一目标数据,得到所述n个初始数据所对应的n个明文数据m0,……,mp-1,mp+1……,mn,其中,所述n个明文数据中每个明文数据的数据长度等于hp的数据长度,hp为hp所对应的明文数据mp,p为大于等于0且小于等于n的整数;第二扩展子单元,用于在所述n+1个初始数据中数据长度最长的一个初始数据hp的数据长度小于所述目标长度的情况下,在所述n+1个初始数据h0,h1,……,hn之后补充第二目标数据,得到所述n+1个初始数据所对应的n+1个明文数据m0,m1,……,mn,其中,所述n+1个明文数据中每个明文数据的数据长度等于所述目标长度,p为大于等于0且小于等于n的整数。可选地,第一获取模块包括:第一获取单元,用于获取待传输的初始数据g,并生成所述初始数据g所对应的初始密钥k;划分单元,用于将所述初始数据g依据目标长度进行划分,获得所述n+1个明文数据m0,m1,……,mn,其中,在划分得到的第n+1个数据的数据长度小于所述目标长度的情况下,在所述第n+1个数据之后补充第三目标数据,得到数据长度为所述目标长度的所述明文数据mn;第二生成单元,用于根据所述初始密钥k通过预设的密钥生成函数生成所述n+1个密钥数据k0,k1,……,kn。可选地,第二生成单元用于:通过以下公式得到n+1个长度为length字节的密钥数据k0,k1,……,kn:k0=keccak(seed0+rand0,length*(n+1)),其中,seed0=k,rand0为一随机数random,keccak为单向散列函数;kt=keccak(seedt+randt,length*(n+1)),其中,randt=rand0+t,seedt=keccak(kt-1+randt,length*(n+1)),t=1,2,3,…,n。可选地,第一生成模块用于:以(k0,m0),(k1,m1),……,(kn,mn)为所述n+1个点坐标采用拉格朗日插值法生成所述n次多项式F(x)=a0+a1*x+a2*x2+…+an*xn。可选地,所述装置还包括:第一处理模块,用于在所述接收端为多个接收端的情况下,使用所述n+1个明文数据m0,m1,……,mn分别对应的接收端的公钥分别对所述n+1个密钥数据k0,k1,……,kn进行加密,得到n+1个加密密钥ken0,ken1,……,kenn;向所述多个接收端中的每个接收端分别发送所述密文数据和所述n+1个加密密钥中与所述每个接收端对应的加密密钥;第二处理模块,用于在所述接收端为一个接收端的情况下,使用所述一个接收端的公钥对初始密钥k进行加密,得到加密密钥ken;向所述一个接收端发送所述密文数据和所述加密密钥ken,其中,所述n+1个密钥数据k0,k1,……,kn是对所述初始密钥k进行分组得到的。根据本专利技术实施例的另一方面,还提供了一种数据的解密装置,包括:第二获取模块,用于获取发送端发送的密文数据[a0,a1,a2…an]和密钥数据ki,其中,所述密文数据[a0,a1,a2…an]为以(k0,m0),(k1,m1),……,(kn,mn)为n+1个点坐标生成的n次多项式F(x)=a0+a1*x+a2*x2+…+an*xn的多项式系数,m0,m1,……,mn为n+1个明文数据,k0,k1,……,kn为n+1个密钥数据,所述n+1个明文数据与所述n+1个密钥数据一一对应,所述n+1个点落在所述n次多项式所表示的曲线上,n为正整数;第二生成模块,用于以密文数据[a0,a1,a2…an]为多项本文档来自技高网...

【技术保护点】
1.一种数据的加密方法,其特征在于,包括:获取n+1个明文数据m0,m1,……,mn以及n+1个密钥数据k0,k1,……,kn,其中,所述n+1个明文数据与所述n+1个密钥数据一一对应,n为正整数;以(k0,m0),(k1,m1),……,(kn,mn)为n+1个点坐标生成n次多项式F(x)=a0+a1*x+a2*x

【技术特征摘要】
1.一种数据的加密方法,其特征在于,包括:获取n+1个明文数据m0,m1,……,mn以及n+1个密钥数据k0,k1,……,kn,其中,所述n+1个明文数据与所述n+1个密钥数据一一对应,n为正整数;以(k0,m0),(k1,m1),……,(kn,mn)为n+1个点坐标生成n次多项式F(x)=a0+a1*x+a2*x2+…+an*xn,其中,所述n+1个点落在所述n次多项式所表示的曲线上;将所述n次多项式的系数[a0,a1,a2…an]确定为所述n+1个明文数据所对应的密文数据。2.根据权利要求1所述的方法,其特征在于,获取所述n+1个明文数据m0,m1,……,mn以及所述n+1个密钥数据k0,k1,……,kn包括:获取待传输的n+1个初始数据;将所述n+1个初始数据中每个初始数据扩展为数据长度为目标长度的所述n+1个明文数据m0,m1,……,mn;生成与所述n+1个明文数据m0,m1,……,mn一一对应的所述n+1个密钥数据k0,k1,……,kn。3.根据权利要求2所述的方法,其特征在于,将所述n+1个初始数据扩展为数据长度为目标长度的所述n+1个明文数据m0,m1,……,mn包括:在所述n+1个初始数据中数据长度最长的一个初始数据hp的数据长度大于或者等于所述目标长度的情况下,在所述n+1个初始数据中除hp之外的其他n个初始数据h0,……,hp-1,hp+1……,hn之后补充第一目标数据,得到所述n个初始数据所对应的n个明文数据m0,……,mp-1,mp+1……,mn,其中,所述n个明文数据中每个明文数据的数据长度等于hp的数据长度,hp为hp所对应的明文数据mp,p为大于等于0且小于等于n的整数;在所述n+1个初始数据中数据长度最长的一个初始数据hp的数据长度小于所述目标长度的情况下,在所述n+1个初始数据h0,h1,……,hn之后补充第二目标数据,得到所述n+1个初始数据所对应的n+1个明文数据m0,m1,……,mn,其中,所述n+1个明文数据中每个明文数据的数据长度等于所述目标长度,p为大于等于0且小于等于n的整数。4.根据权利要求1所述的方法,其特征在于,获取所述n+1个明文数据m0,m1,……,mn以及所述n+1个密钥数据k0,k1,……,kn包括:获取待传输的初始数据g,并生成所述初始数据g所对应的初始密钥k;将所述初始数据g依据目标长度进行划分,获得所述n+1个明文数据m0,m1,……,mn,其中,在划分得到的第n+1个数据的数据长度小于所述目标长度的情况下,在所述第n+1个数据之后补充第三目标数据,得到数据长度为所述目标长度的所述明文数据mn;根据所述初始密钥k通过预设的密钥生成函数生成所述n+1个密钥数据k0,k1,……,kn。5.根据权利要求4所述的方法,其特征在于,根据所述初始密钥k通过预设的密钥生成函数生成所述n+1个密钥数据k0,k1,……,kn包括:通过以下公式得到n+1个长度为length字节的密钥数据k0,k1,……,kn:k0=keccak(seed0+rand0,length*(n+1)),其中,seed0=k,rand0为一随机数random,keccak为单向散列函数;kt=keccak(seedt+randt,length*(n+1)),其中,randt=rand0+t,seedt=keccak(kt-1+randt,length*(n+1)),t=1,2,3,…,n。6.根据权利要求1所述的方法,其特征在于,以(k0,m0),(k1,m1),……,(kn,mn)为n+1个点坐标生成n次多项式F(x)=a0+a1*x+a2*x2+…+an*xn包括:以(k0,m0),(k1,m1),……,(kn,mn)为所述n+1个点坐标采用拉格朗日插值法生成所述n次多项式F(x)=a0+a1*x+a2*x2+…+an*xn。7.根据权利要求1至6中任一项所述的方法,其特征在于,在将所述n次多项式的系数[a0,a1,a2…an]确定为所述n+1个明文数据所对应的密文数据之...

【专利技术属性】
技术研发人员:程威
申请(专利权)人:北京思源互联科技有限公司
类型:发明
国别省市:北京,11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1