一种大数据加密方法

文档序号:8907567阅读:2431来源:国知局
一种大数据加密方法
【技术领域】
[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)取得加密密码
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1