发明名称 一种大数据加密方法
摘要 本发明公开了一种大数据的加密方法,首先对第一个分组明文N<sub>1</sub>进行加密;接着对第二个分组明文N<sub>2</sub>进行加密;接着对第三个分组明文N<sub>3</sub>进行加密;对中间密文M进行第二次加密;提供的加密方法,能同时能做到一次一密,增加了加密强度;解决了加密速度的问题。
申请公布号 CN104883257A 申请公布日期 2015.09.02
申请号 CN201410258583.8 申请日期 2014.06.12
申请人 梁庆生 发明人 梁庆生
分类号 H04L9/32(2006.01)I;H04L9/08(2006.01)I;H04L9/06(2006.01)I 主分类号 H04L9/32(2006.01)I
代理机构 东莞市神州众达专利商标事务所(普通合伙) 44251 代理人 刘汉民
主权项 一种大数据的加密方法,其特征在于:本方法基于如下原理进行加密:对数据采用分组的方式进行加密,每组数据加密长度为一个字节或两个字节及以上,通常使用一个字节;每个分组数据的加密方式是每个分组数据与数值X<sub>n</sub>及Y<sub>n</sub>(以下统称为密码X<sub>n</sub><sub>,</sub>及Y<sub>n</sub>)进行异或与每个分组数据异或的密码X<sub>n</sub>及Y<sub>n</sub>都是不相同的;相邻两组的密码X<sub>n</sub>及X<sub>(n+1)</sub>存在不确定性关系;相邻两组的密码Y<sub>n</sub>及Y<sub>(n+1)</sub>存在不确定性关系;密码X<sub>n</sub>及Y<sub>n</sub>的值由一组数据确定,这组数据称之为交换密钥:所述交换密钥由种子一(s1)、种子二(s2)、交换盒一(A)及交换盒二(B)组成;每次加密时,交换密钥都是随机生成的,即种子一(s1)、种子二(s2)、交换盒一(A)及交换盒二(B)中的数据都是随机的,每次加密都随机生成;交换盒A及B可以是一个j*1的长整形矩阵,j&gt;=256,通常为256,该矩阵也可以看作是一个有j个长整形元素的一维数组,以下在数学上称之为数组A及数组B;种子一(s1)、种子二(s2)的大小通常为一个长整形;所述密码X<sub>n</sub>由种子一(s1)及交换盒一(A)确定;种子一(s1)每进行一次分组加密后,都进行一次变换,变换方式可以是线性同余的方式或非线性的方式;所述交换盒一(A)每进行Z次分组加密后,交换盒中的所有元素都进行一次变换,变换方式可以是线性同余的方式或非线性方式,以下以线性同余的方式介绍(Z&gt;=1,,Z&lt;=A的元素个数,通常为256);所述交换盒一(A)中的数据取余后放置到一个临时交换盒中(temp_A);其中:X<sub>n  </sub>是temp_A中的第s1个元素的值;密码Y<sub>n</sub>由种子二(s2)及交换盒二(B)确定;种子二(s2)每进行一次分组加密后,都进行一次变换,变换方式可以是线性同余的方式;交换盒二(B)每进行Z次分组加密后,交换盒中的所有元素都进行一次变换,变换方式可以是线性同余的方式,(Z&gt;=1,Z&lt;=B的元素个数,通常为256);交换盒二(B)中的数据取余后放置到一个临时交换盒中(temp_B);其中:Y<sub>n  </sub>是temp_B中的第s<sub>2</sub>个元素的值;交换密钥的传送使用加密传送或等时产生的方式;基于上述原理,本发明加密方法步骤如下:设有某一大分组明文数据N<sub>1 </sub>, N<sub>2 </sub>, N<sub>3 </sub>, …… N<sub>x</sub>,每个分组数据的长度为一个字节,加密方法如下:一)、对明文N进行第一次加密1)、首先对第一个分组明文N<sub>1</sub>进行加密:对数组A进行变换,生成新的随机数组A: A[i]=Af2(A[i]),方法可以是线性同余法,其中i是从1到Z,以下不再累述;生成数组temp_A,取A[n]除以A数组大小的余数,然后放置到temp_A中:temp_A[i]=Af3(A[i])对随机种子一s1进行变换,生成新的随机种子s1:s1=Af2(s1) ,方法可以是线性同余法;取是临时种子temp_s1,取s1除以A数组大小的余数,方法是temp_s1=Af3(s1) ;取得加密密码X<sub>1 </sub>,即temp_A数组中的第temp_s1个下标的元素的值,方法是:X<sub>1 </sub>=temp_A[temp_s1];将明文N<sub>1 </sub>与X<sub>1  </sub>进行异或操作,得出中间密文M<sub>1</sub>2)、接着对第二个分组明文N<sub>2</sub>进行加密对随机种子一s1进行变换,生成新的随机种子s1:s1=Af2(s1) ,方法可以是线性同余法;取是临时种子temp_s1,取s1除以A数组大小的余数,方法是temp_s1=Af3(s1)  ;取得加密密码X<sub>2 </sub>,即temp_A数组中的第temp_s1个下标的元素的值,方法是:X<sub>2 </sub>=temp_A[temp_s1];将明文N<sub>2</sub>与X<sub>2  </sub>进行异或操作,得出中间密文M<sub>2</sub><sub>;</sub>3)、接着对第三个分组明文N<sub>3</sub>进行加密对随机种子一s1进行变换,生成新的随机种子s1:s1=Af2(s1) ,方法可以是线性同余法;取是临时种子temp_s1,取s1除以A数组大小的余数,方法是temp_s1=Af3(s1)  ;取得加密密码X<sub>3 </sub>,即temp_A数组中的第temp_s1个下标的元素的值,方法是:X<sub>3 </sub>=temp_A[temp_s1];将明文N<sub>3</sub>与X<sub>3  </sub>进行异或操作,得出中间密文M<sub>3 </sub> ;当加密到第Z个分组时(Z&gt;=1,Z&lt;=A的元素个数,通常为256)先进行一次数组A的变换,再进行加密,即每加密到一个Z分组的大小,就进行一次数组A的变换;如此类推,直至加密到N<sub>x</sub>得出中间密文M<sub>X </sub><sub>;</sub>二)、对中间密文M进行第二次加密1)、首先对第一个中间密文M<sub>1</sub>进行加密:对数组B进行变换,生成新的随机数组B: B[i]=Bf2(B[i]),方法可以是线性同余法,其中i是从1到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);取得加密密码Y<sub>1 </sub>,即temp_B数组中的第temp_s2个下标的元素的值,方法是:Y<sub>1 </sub>=temp_B[temp_s2];将明文N<sub>1 </sub>与Y<sub>1  </sub>进行异或操作,得出密文C<sub>1</sub><sub>;</sub>2)、接着对第二个中间密文M<sub>2</sub>进行加密对随机种子二s2进行变换,生成新的随机种子s2:s2=Bf2(s2) ,方法可以是线性同余法;取是临时种子temp_s2,取s2除以B数组大小的余数,方法是temp_s2=Bf3(s2) ;取得加密密码Y<sub>2 </sub>,即temp_B数组中的第temp_s2个下标的元素的值,方法是:Y<sub>2 </sub>=temp_B[temp_s2];将明文N<sub>2</sub>与Y<sub>2  </sub>进行异或操作,得出密文C<sub>2</sub>3)、接着对第三个中间密文M<sub>3</sub>进行加密对随机种子二s2进行变换,生成新的随机种子s2:s2=Bf2(s2) ,方法可以是线性同余法;取是临时种子temp_s2,取s2除以B数组大小的余数,方法是temp_s2=Bf3(s2);取得加密密码Y<sub>3 </sub>,即temp_B数组中的第temp_s2个下标的元素的值,方法是:Y<sub>3 </sub>=temp_B[temp_s2];将明文N<sub>3</sub>与Y<sub>3  </sub>进行异或操作,得出密文C<sub>3</sub><sub>;</sub>当加密到第Z个分组时(Z&gt;=1,Z&lt;=B的元素个数,通常为256)先进行一次数组B的变换,再进行加密,即每加密到一个Z分组的大小,就进行一次数组B的变换;4)、如此类推,直至加密到M<sub>x</sub>得出密文C<sub>X</sub>。
地址 523000 广东省东莞市莞城区西正路15号4楼