一种大数据加密方法

xiaoxiao2020-10-23  10

一种大数据加密方法
【技术领域】
[0001]本发明涉及数据的加密方法,具体涉及一种大数据的加密方法。
【背景技术】
[0002]传统的加密方法,如(3DES,AES或SM2等算法)对于大数据量的加密,都存在着加密速度慢的缺点。

【发明内容】

[0003]本发明的目的在于:针对现有技术的上述缺陷,提供一种加密速度快的大数据的加密方法。
[0004]加密方法如下:
1.新的加密方法采用分组加密,每组加密长度为一个字节或两个字节及以上,通常使用一个字节;
2.每个分组数据的加密方式是每个分组数据与数值XlvSY n(以下统称为密码Xn,及Yn)进行异或
3.与每个分组数据异或的密码乂?及Yn都是不相同的
4.相邻两组的密码X(n+1)存在不确定性关系
5.相邻两组的密码YJlY (n+1)存在不确定性关系
6.密码Yn的值由一组数据确定,这组数据称之为交换密钥
7.交换密钥由种子一(Si)、种子二(s2)、交换盒一(A)及交换盒二(B)组成
8.每次加密时,交换密钥都是随机生成的,即种子一(Si)、种子二(s2)、交换盒一(A)及交换盒二(B)中的数据都是随机的,每次加密都随机生成
9.交换盒A及B可以是一个j*l的长整形矩阵,j>=256,通常为256,该矩阵也可以看作是一个有j个长整形元素的一维数组,以下在数学上称之为数组A及数组B
10.种子一(Si)、种子二(s2)的大小通常为一个长整形
11.密码乂?由种子一(Si)及交换盒一(A)确定
12.种子一(Si)每进行一次分组加密后,都进行一次变换,变换方式可以是线性同余的方式或非线性的方式,以下以线性同余的方式介绍
13.交换盒一(A)每进行Z次分组加密后,交换盒中的所有元素都进行一次变换,变换方式可以是线性同余的方式或非线性方式,以下以线性同余的方式介绍(Z>=1,,Z〈=A的元素个数,通常为256)
14.交换盒一(A)中的数据取余后放置到一个临时交换盒中(temp_A);
15.Xn是temp_A中的第si个元素的值
16.密码¥?由种子二(s2)及交换盒二(B)确定
17.种子二(s2)每进行一次分组加密后,都进行一次变换,变换方式可以是线性同余的方式 18.交换盒二(B)每进行Z次分组加密后,交换盒中的所有元素都进行一次变换,变换方式可以是线性同余的方式,(Ζ>=1, Z<=B的元素个数,通常为256)
19.交换盒二(B)中的数据取余后放置到一个临时交换盒中(temp_B);
20.Yn是temp_B中的第S2个元素的值
21.交换密钥的传送使用加密传送或等时产生的方式。
[0005]本发明方法的优点:
本发明提供的加密方法,能同时能做到一次一密,增加了加密强度;解决了加密速度的冋题。
【附图说明】
图1是本发明加密原理图。
【具体实施方式】
[0006]本方法的加密原理图如图1所示:
图中的代表异或运算
Afl(X)运算过程如下:
1、sl=Af2(sl)根据si生成下一个随机数
2、temp_sl=Af3(si)取si除以A数组大小的余数
3、返回temp_A数组中的第temp_sl个下标的元素的值
Af2(x)运算过程如下:目的用于生成下一个随机数,方法可以是线性同余,举例如下:
#define RAND0M_MAX 0x7FFFFFFF
static long do_rand(unsigned long 氺value)
{
long quotient, remainder, t; quotient = *value / 127773L; remainder = lvalue % 127773L; t = 16807L * remainder - 2836L * quotient; if (t〈= 0)
t += 0x7FFFFFFFL; return ((lvalue = t) % ((unsigned long)RAND0M_MAX +1));
}
Af3 (X)运算过程如下:目的用于取余
temp_x=(BYTE)x;取除以256后的余数,假定A数组的大小为256 temp_A数组的生成:
temp_A根据A生成,每进行Z次分组加密后,就根据A生成一次temp_A,方法是:
1、A[n]=Af2(A[n])根据A[η]生成下一个随机数并赋给A[η]
2、temp_A[n]=Af3(Α[η])取A[η]除以A数组大小的余数 Bfl(X)运算过程如下:
3、s2=Bf2(s2)根据s2生成下一个随机数 4、temp_s2=Bf3(s2)取s2除以B数组大小的余数
5、返回temp_B数组中的第temp_s2个下标的元素的值
Bf2 (x)运算过程如下:目的用于生成下一个随机数,方法可以是线性同余 X= (((x * 1103515245 + 12345)) & 0x7fffffff);,
Bf3 (X)运算过程如下:目的用于取余
temp_x=(BYTE)x;取除以256后的余数,假定B数组的大小为256 temp_B数组的生成:
temp_B根据B生成,每进行Z次分组加密后,就根据B生成一次temp_B,方法是: l、B[n]=Bf2(B[n])根据B [η]生成下一个随机数并赋给B [η]
2> temp_B [n] =Bf3 (B [η])取B [η]除以B数组大小的余数加密过程:
设有某一大分组明文数据N1,N2,N3,……Nx,每个分组数据的长度为一个字节,加密方法如下:
一、对明文N进行第一次加密
1、首先对第一个分组明文&进行加密
对数组A进行变换,生成新的随机数组A: A[i]=Af2(A[i]),方法可以是线性同余法,其中i是从I到Z,以下不再累述。
[0007]生成数组temp_A,取A[η]除以A数组大小的余数,然后放置到temp_A中:temp_A[i] =Af3 (A[i])
对随机种子一 si进行变换,生成新的随机种子si:sl=Af2(sl),方法可以是线性同余法
取是临时种子temp_sl,取si除以A数组大小的余数,方法是temp_sl=Af3 (si)取得加密密码X1,即temp_A数组中的第temp_sl个下标的元素的值,方法是-Xi=temp_A[temp_sI]
将明文N1与X1进行异或操作,得出中间密文M1
2、接着对第二个分组明文队进行加密
对随机种子一 Si进行变换,生成新的随机种子si:sl=Af2(sl),方法可以是线性同余法
取是临时种子temp_sl,取si除以A数组大小的余数,方法是temp_sl=Af3 (si)取得加密密码X2,即temp_A数组中的第temp_sl个下标的元素的值,方法是:X2=temp_A[temp_sI]
将明文队与)^进行异或操作,得出中间密文M2
3、接着对第三个分组明文乂进行加密
对随机种子一 Si进行变换,生成新的随机种子si:sl=Af2(sl),方法可以是线性同余法
取是临时种子temp_sl,取si除以A数组大小的余数,方法是temp_sl=Af3 (si)取得加密密码X3,即temp_A数组中的第temp_sl个下标的元素的值,方法是:X3=temp_A[temp_sI]
将明文乂与夂3进行异或操作,得出中间密文M3 4、当加密到第Z个分组时(Z>=1,Z〈=A的元素个数,通常为256)先进行一次数组A的变换,再进行加密,即每加密到一个Z分组的大小,就进行一次数组A的变换。
[0008]5、如此类推,直至加密到Nx得出中间密文Mx
二、对中间密文M进行第二次加密
1、首先对第一个中间密文1^进行加密
对数组B进行变换,生成新的随机数组B: B[i]=Bf2(B[i]),方法可以是线性同余法,其中i是从I到Z,以下不再累述。
[0009]生成数组temp_B,取B[i]除以B数组大小的余数,然后放置到temp_B中:temp_B[i]=Bf3 (B[i])
对随机种子二 s2进行变换,生成新的随机种子s2:s2=Bf2(s2),方法可以是线性同余法
取是临时种子temp_s2,取s2除以A数组大小的余数,方法是temp_s2=Bf3 (s2)取得加密密码 Y1,即temp_B数组中的第temp_s2个下标的元素的值,方法是-Yi=temp_B[temp_s2]
将明文N1与Y1进行异或操作,得出密文C1
2、接着对第二个中间密文]?2进行加密
对随机种子二 s2进行变换,生成新的随机种子s2:s2=Bf2(s2),方法可以是线性同余法
取是临时种子temp_s2,取s2除以B数组大小的余数,方法是temp_s2=Bf3 (s2)取得加密密码Y2,即temp_B数组中的第temp_s2个下标的元素的值,方法是:Y2=temp_B[temp_s2]
将明文队与¥2进行异或操作,得出密文C2 接着对第三个中间密文1?3进行加密
对随机种子二 s2进行变换,生成新的随机种子s2:s2=Bf2(s2),方法可以是线性同余法
取是临时种子temp_s2,取s2除以B数组大小的余数,方法是temp_s2=Bf3 (s2)取得加密密码Y3,即temp_B数组中的第temp_s2个下标的元素的值,方法是:Y3=temp_B[temp_s2]
将明文乂与¥3进行异或操作,得出密文C3
3.当加密到第Z个分组时(Z>=1,Z<=B的元素个数,通常为256)先进行一次数组B的变换,再进行加密,即每加密到一个Z分组的大小,就进行一次数组B的变换;
4.如此类推,直至加密到Mx得出密文Cx 解密过程:
设有某一大分组密文数据C1,C2 , C3 ,……Cx,每个分组数据的长度为一个字节,解密方法如下:
一.取得交换密钥,即随机种子一(Sl)、随机种子二(S2)、交换盒一(A)及交换盒二(B)由于随机种子一(Sl)、种子二(S2)、交换盒一㈧及交换盒二(B)(即交换密钥)每次都是随机的,所以每次解密时都要取得交换密钥,要取得交换密钥,方法如下:
1.加密传送,加密方使用对称算法或非对称算法对交换密钥进行加密后传送给解密方 2.使用等时生成相同的交换密钥,所谓等时生成相同,是指加密方及解密方都存在着相同的这样一个设备(以下统称为密钥生成设备),这两个设备能在同一时刻生成相同的随机交换密钥并记录下一段时间内的这些交换密钥,加密方使用加密方的密钥生成设备在某一时刻(t)生成的交换密钥对明文进行加密,同时将(t)发送给解密方,解密方根据(t)在解密方的密钥生成设备找到相同的交换密钥对对应的密文进行解密。
[0010]二、先对密文进行第一次解密:
1.首先对第一个分组密文(^进行解密,得出中间密文
对数组B进行变换,生成新的随机数组B: B[i]=Bf2(B[i]),方法可以是线性同余法,其中i是从I到Z,以下不再累述。
[0011]生成数组temp_B,取B[i]除以B数组大小的余数,然后放置到temp_B中:temp_B[i]=Bf3 (B[i])
对随机种子二 s2进行变换,生成新的随机种子s2:s2=Bf2(s2),方法可以是线性同余法
取是临时种子temp_s2,取s2除以A数组大小的余数,方法是temp_s2=Bf3 (s2)取得解密密码Y1,即temp_B数组中的第temp_s2个下标的元素的值,方法是-Yi=temp_B[temp_s2]
将密文C1与Y1进行异或操作,得出中间密文M1
2.接着对第二个分组密文(:2进行加密
对随机种子二 s2进行变换,生成新的随机种子s2:s2=Bf2(s2),方法可以是线性同余法
取是临时种子temp_s2,取s2除以B数组大小的余数,方法是temp_s2=Bf3 (s2)取得解密密码Y2,即temp_B数组中的第temp_s2个下标的元素的值,方法是:Y2=temp_B[temp_s2]
将密文(:2与¥2进行异或操作,得出中间密文M2 接着对第三个分组密文(:3进行加密
对随机种子二 s2进行变换,生成新的随机种子s2:s2=Bf2(s2),方法可以是线性同余法;
取是临时种子temp_s2,取s2除以B数组大小的余数,方法是temp_s2=Bf3 (s2)取得解密密码Y3,即temp_B数组中的第temp_s2个下标的元素的值,方法是:Y3=temp_B[temp_s2];
将密文(:3与¥3进行异或操作,得出中间密文M3;
3.当解密到第Z个分组时(Z>=1,Z<=B的元素个数,通常为256)先进行一次数组B的变换,再进行解密,即每解密到一个Z分组的大小,就进行一次数组B的变换;
4.如此类推,直至解密到Cx得出中间密文Mx。
三、对中间密文M进行第二次解密
1、首先对第一个中间密文]^进行解密
对数组A进行变换,生成新的随机数组A: A[i]=Af2(A[i]),方法可以是线性同余法,其中i是从I到Z,以下不再累述。
[0012]生成数组temp_A,取A[n]除以A数组大小的余数,然后放置到temp_A中:temp_A[i] =Af3 (A[i])
对随机种子一 si进行变换,生成新的随机种子si:sl=Af2(sl),方法可以是线性同余法
取是临时种子temp_sl,取si除以A数组大小的余数,方法是temp_sl=Af3 (si)取得解密密码X1,即temp_A数组中的第temp_sl个下标的元素的值,方法是-X1=temp_A[temp_sI]
将中间密文M1与X1进行异或操作,得出明文C1
2.接着对第二个中间密文仏进行解密
对随机种子一 Si进行变换,生成新的随机种子si:sl=Af2(sl),方法可以是线性同余法
取是临时种子temp_sl,取si除以A数组大小的余数,方法是temp_sl=Af3 (si)取得解密密码X2,即temp_A数组中的第temp_sl个下标的元素的值,方法是:X2=temp_A[temp_sI]
将中间密文仏与X2进行异或操作,得出明文C2
3.接着对第三个中间密文%进行解密
对随机种子一 Si进行变换,生成新的随机种子si:sl=Af2(sl),方法可以是线性同余法
取是临时种子temp_sl,取si除以A数组大小的余数,方法是temp_sl=Af3 (si)取得解密密码X3,即temp_A数组中的第temp_sl个下标的元素的值,方法是:X3=temp_A[temp_sI]
将中间密文%与X3进行异或操作,得出明文C3
4.当解密到第Z个分组时(Z>=1,Z〈=A的元素个数,通常为256)先进行一次数组A的变换,再进行解密,即每解密到一个Z分组的大小,就进行一次数组A的变换
5.如此类推,直至解密到Mj#出明文Cx 原理证明:
定理一,已知密文求明文,必须求Yn根据前面原理所述,密文(;是Nn~Xn~Yn得出,即 Cn=Nn~Xn~Yn,设 Kn= Cn~ Nn,得出公式 Kn=Xn~Yn,。
[0013]定理二,当密文长度少于Z时,Z通常为256,各个分组之间的Xn和各个Yn没有必然的联系。
[0014]证明如下:已知X n =temp_A[temp_sI],temp_sl=Af3 (si),又已知 temp_A[i]=Af3(A[i]),得出Xn= Af 3 (A[Af3(sl)]),可见各个X n由随机数si及随机数组A决定。所以各个Xn2间没有必然的联系。同样原理可以,各个Yn2间没有必然的联系。
[0015]定理三,已知密文C及明文Nn无法推出temp_sl及temp_s2。
[0016]证明如下:根据定理一:Kn=Xn~Yn,,temp_sl及temp_s2并没有直接参与运算,所以根据Kn或Xn或Yn,无知推出temp_sl及temp_s2。
[0017]定理四,已知temp_sl,无法反推出sl,
证明如下:temp_sl=Af3 (sl),即temp_sl+P*256=sl,P及sl均为未知数,所以已知temp_sl,无法反推出sl。
[0018]定理五,已知多个temp_sl,无法反推出sl, 证明如下:根据定理四可知,temp+sli +P1 *256=8]^,temp_sl2 +P2 *256=sl2,,又根据上面原理所述!Sl1与Sl2是同余关系,故Sl1 =Q *sl2 +R,可见三条方程式中有6个未知数,所以已知多个temp_sl,无法反推出sl。
[0019]定理六,已知多个Xn,无法反推出A,
证明方法同上。
[0020]定理七,已知多个Yn,无法反推出B,
证明方法定理五。
[0021]定理八,当密文个数少于Z时,Z通常为256,无法根据密文反推出明文。
[0022]证明如下:根加密原理8所述:每次加密时,交换密钥都是随机生成的,再根据定理二:当密文长度少于 Z时,Z通常为256,各个分组之间的Xn和各个Yn没有必然的联系,得出定理一中的方程式Κη=Χη~Υη,是一个独立的方程式,又由定理一 Κη=Χη~Υη,可知,已知Kn,无法求出Xn和Yn。
[0023]定理九,temp_sln与temp_sl (n+1)之间的关系只与随机种子sl相关。
[0024]证明如下:已知temp_sln = Af3 (sl), new_sl==Af2 (sl), temp_sl (n+1) = Af3 (new_sl), temp_sl (z+1) = Af3 (Af2(sl)),可见 temp_sln 与 temp_sl (n+1)之间的关系只与随机种子sl相关
定理十,X# X (n+1)之间的关系只与随机数组A及随机种子Si相关。
[0025]证明原理同上。
[0026]定理十一,¥?与Y (n+1)之间的关系只与随机数组B随机种子s2相关。
[0027]证明原理同定理九。
[0028]定理十二,使用枚举某一密文对应的XlvS Y n,tem_A,temp_B的方法无法得出另一个密文对应的明文。
[0029]证明如下:根据定量二可知,各个XlvS Y ?由随机数sl,s2及随机数组A、B决定,又根据定理四,定理五,定理六,定理七可知,已知某一 X n及¥?无法推出随机数sl,s2及随机数组A、B,所以使用枚举某一密文对应的XlvS Yn, tem_A,temp_B的方法无法得出另一个密文对应的明文。
[0030]定理十三,当密文个数为Z+1时,Z通常为256,无法根据密文反推出明文。
[0031]证明如下:根据定理十二,定理九,定理十,定理^ ,要求出乂?与X (n+1)之间的关系,必须要知道随机数组A,B及随机种子sl,s2,而A,B,sl, s2都是未知且随机的,所以在A,B,sl,s2都是未知及随机的情况下,可以将定理一中的方程式Kn=Xn~Yn看作是一个独立的方程式,又由定理一 Κη=Χη~Υη,可知,已知Kn,无法求出Xn和Υη。
【主权项】
1.一种大数据的加密方法,其特征在于:本方法基于如下原理进行加密:对数据采用分组的方式进行加密,每组数据加密长度为一个字节或两个字节及以上,通常使用一个字节;每个分组数据的加密方式是每个分组数据与数值XlvS Yn (以下统称为密码Xn,及Yn)进行异或与每个分组数据异或的密码乂?及Yn都是不相同的;相邻两组的密码夂?及X (n+1)存在不确定性关系;相邻两组的密码YnR Y (n+1)存在不确定性关系;密码X ?及Y n的值由一组数据确定,这组数据称之为交换密钥: 所述交换密钥由种子一(Si)、种子二(S2)、交换盒一(A)及交换盒二(B)组成;每次加密时,交换密钥都是随机生成的,即种子一(Si)、种子二(s2)、交换盒一(A)及交换盒二(B)中的数据都是随机的,每次加密都随机生成;交换盒A及B可以是一个j*l的长整形矩阵,j>=256,通常为256,该矩阵也可以看作是一个有j个长整形元素的一维数组,以下在数学上称之为数组A及数组B ;种子一(Si)、种子二(s2)的大小通常为一个长整形; 所述密码Xn*种子一(Si)及交换盒一(A)确定;种子一(Si)每进行一次分组加密后,都进行一次变换,变换方式可以是线性同余的方式或非线性的方式; 所述交换盒一(A)每进行Z次分组加密后,交换盒中的所有元素都进行一次变换,变换方式可以是线性同余的方式或非线性方式,以下以线性同余的方式介绍(Z>=1,,Z〈=A的元素个数,通常为256); 所述交换盒一(A)中的数据取余后放置到一个临时交换盒中(temp_A); 其中:Xn中的第Si个元素的值;密码Y1^种子二(s2)及交换盒二⑶确定;种子二(s2)每进行一次分组加密后,都进行一次变换,变换方式可以是线性同余的方式;交换盒二(B)每进行Z次分组加密后,交换盒中的所有元素都进行一次变换,变换方式可以是线性同余的方式,(Ζ>=1, Z<=B的元素个数,通常为256); 交换盒二(B)中的数据取余后放置到一个临时交换盒中(temp_B); 其中:Yn是temp_B中的第S2个元素的值; 交换密钥的传送使用加密传送或等时产生的方式; 基于上述原理,本发明加密方法步骤如下:设有某一大分组明文数据N1,N2,N3,……Nx,每个分组数据的长度为一个字节,加密方法如下: 一)、对明文N进行第一次加密 1)、首先对第一个分组明文&进行加密: 对数组A进行变换,生成新的随机数组A: A[i]=Af2(A[i]),方法可以是线性同余法,其中i是从I到Z,以下不再累述; 生成数组temp_A,取A [η]除以A数组大小的余数,然后放置到temp_A中:temp_A[i] =Af3 (A[i]) 对随机种子一 si进行变换,生成新的随机种子si:sl=Af2(sl),方法可以是线性同余法; 取是临时种子temp_sl,取si除以A数组大小的余数,方法是temp_sl=Af3 (si);取得加密密码X1,即temp_A数组中的第temp_sl个下标的元素的值,方法是-Xi=temp_A[temp_sl]; 将明文N1与X1进行异或操作,得出中间密文M1 2)、接着对第二个分组明文队进行加密对随机种子一 Si进行变换,生成新的随机种子si:sl=Af2(sl),方法可以是线性同余法; 取是临时种子temp_sl,取si除以A数组大小的余数,方法是temp_sl=Af3 (si);取得加密密码X2,即temp_A数组中的第temp_sl个下标的元素的值,方法是:X2=t emp_A[t emp_sI]; 将明文队与)^进行异或操作,得出中间密文M2; 3)、接着对第三个分组明文乂进行加密 对随机种子一 Si进行变换,生成新的随机种子si:sl=Af2(sl),方法可以是线性同余法; 取是临时种子temp_sl,取si除以A数组大小的余数,方法是temp_sl=Af3 (si);取得加密密码X3,即temp_A数组中的第temp_sl个下标的元素的值,方法是:X3=t emp_A[t emp_sI]; 将明文乂与夂3进行异或操作,得出中间密文M3 ; 当加密到第Z个分组时(Z>=1,Z〈=A的元素个数,通常为256)先进行一次数组A的变换,再进行加密,即每加密到一个Z分组的大小,就进行一次数组A的变换; 如此类推,直至加密到Nx得出中间密文Mx ; 二)、对中间密文M进行第二次加密 1)、首先对第一个中间密文乂进行加密: 对数组B进行变换,生成新的随机数组B: B[i]=Bf2(B[i]),方法可以是线性同余法,其中i是从I到Z,以下不再累述; 生成数组temp_B,取B [i]除以B数组大小的余数,然后放置到temp_B中:temp_B[i]=Bf3(B[i]); 对随机种子二 s2进行变换,生成新的随机种子s2:s2=Bf2(s2),方法可以是线性同余法; 取是临时种子temp_s2,取s2除以A数组大小的余数,方法是temp_s2=Bf3 (s2);取得加密密码Y1,即temp_B数组中的第temp_s2个下标的元素的值,方法是-Yi=temp_B[temp_s2]; 将明文N1与Y1进行异或操作,得出密文C1; 2)、接着对第二个中间密文]?2进行加密 对随机种子二 s2进行变换,生成新的随机种子s2:s2=Bf2(s2),方法可以是线性同余法; 取是临时种子temp_s2,取s2除以B数组大小的余数,方法是temp_s2=Bf3 (s2);取得加密密码Y2,即temp_B数组中的第temp_s2个下标的元素的值,方法是:Y2=temp_B[temp_s2]; 将明文队与¥2进行异或操作,得出密文C2 3)、接着对第三个中间密文1?3进行加密 对随机种子二 s2进行变换,生成新的随机种子s2:s2=Bf2(s2),方法可以是线性同余法; 取是临时种子temp_s2,取s2除以B数组大小的余数,方法是temp_s2=Bf3 (s2); 取得加密密码Y3,即temp_B数组中的第temp_s2个下标的元素的值,方法是:Y3=temp_B[temp_s2]; 将明文乂与¥3进行异或操作,得出密文C3; 当加密到第Z个分组时(Z>=1,Z<=B的元素个数,通常为256)先进行一次数组B的变换,再进行加密,即每加密到一个Z分组的大小,就进行一次数组B的变换; 4)、如此类推,直至加密到]^得出密文Cx。
【专利摘要】本发明公开了一种大数据的加密方法,首先对第一个分组明文N1进行加密;接着对第二个分组明文N2进行加密;接着对第三个分组明文N3进行加密;对中间密文M进行第二次加密;提供的加密方法,能同时能做到一次一密,增加了加密强度;解决了加密速度的问题。
【IPC分类】H04L9/08, H04L9/32, H04L9/06
【公开号】CN104883257
【申请号】CN201410258583
【发明人】梁庆生
【申请人】梁庆生
【公开日】2015年9月2日
【申请日】2014年6月12日
转载请注明原文地址:https://www.famiwei.com/read-8136320.html

最新回复(0)