一種大數(shù)據(jù)加密方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及數(shù)據(jù)的加密方法,具體涉及一種大數(shù)據(jù)的加密方法。
【背景技術(shù)】
[0002]傳統(tǒng)的加密方法,如(3DES,AES或SM2等算法)對于大數(shù)據(jù)量的加密,都存在著加密速度慢的缺點。
【發(fā)明內(nèi)容】
[0003]本發(fā)明的目的在于:針對現(xiàn)有技術(shù)的上述缺陷,提供一種加密速度快的大數(shù)據(jù)的加密方法。
[0004]加密方法如下:
1.新的加密方法采用分組加密,每組加密長度為一個字節(jié)或兩個字節(jié)及以上,通常使用一個字節(jié);
2.每個分組數(shù)據(jù)的加密方式是每個分組數(shù)據(jù)與數(shù)值XlvSY n(以下統(tǒng)稱為密碼Xn,及Yn)進行異或
3.與每個分組數(shù)據(jù)異或的密碼乂?及Yn都是不相同的
4.相鄰兩組的密碼X(n+1)存在不確定性關(guān)系
5.相鄰兩組的密碼YJlY (n+1)存在不確定性關(guān)系
6.密碼Yn的值由一組數(shù)據(jù)確定,這組數(shù)據(jù)稱之為交換密鑰
7.交換密鑰由種子一(Si)、種子二(s2)、交換盒一(A)及交換盒二(B)組成
8.每次加密時,交換密鑰都是隨機生成的,即種子一(Si)、種子二(s2)、交換盒一(A)及交換盒二(B)中的數(shù)據(jù)都是隨機的,每次加密都隨機生成
9.交換盒A及B可以是一個j*l的長整形矩陣,j>=256,通常為256,該矩陣也可以看作是一個有j個長整形元素的一維數(shù)組,以下在數(shù)學(xué)上稱之為數(shù)組A及數(shù)組B
10.種子一(Si)、種子二(s2)的大小通常為一個長整形
11.密碼乂?由種子一(Si)及交換盒一(A)確定
12.種子一(Si)每進行一次分組加密后,都進行一次變換,變換方式可以是線性同余的方式或非線性的方式,以下以線性同余的方式介紹
13.交換盒一(A)每進行Z次分組加密后,交換盒中的所有元素都進行一次變換,變換方式可以是線性同余的方式或非線性方式,以下以線性同余的方式介紹(Z>=1,,Z〈=A的元素個數(shù),通常為256)
14.交換盒一(A)中的數(shù)據(jù)取余后放置到一個臨時交換盒中(temp_A);
15.Xn是temp_A中的第si個元素的值
16.密碼¥?由種子二(s2)及交換盒二(B)確定
17.種子二(s2)每進行一次分組加密后,都進行一次變換,變換方式可以是線性同余的方式 18.交換盒二(B)每進行Z次分組加密后,交換盒中的所有元素都進行一次變換,變換方式可以是線性同余的方式,(Ζ>=1, Z<=B的元素個數(shù),通常為256)
19.交換盒二(B)中的數(shù)據(jù)取余后放置到一個臨時交換盒中(temp_B);
20.Yn是temp_B中的第S2個元素的值
21.交換密鑰的傳送使用加密傳送或等時產(chǎn)生的方式。
[0005]本發(fā)明方法的優(yōu)點:
本發(fā)明提供的加密方法,能同時能做到一次一密,增加了加密強度;解決了加密速度的冋題。
【附圖說明】
圖1是本發(fā)明加密原理圖。
【具體實施方式】
[0006]本方法的加密原理圖如圖1所示:
圖中的代表異或運算
Afl(X)運算過程如下:
1、sl=Af2(sl)根據(jù)si生成下一個隨機數(shù)
2、temp_sl=Af3(si)取si除以A數(shù)組大小的余數(shù)
3、返回temp_A數(shù)組中的第temp_sl個下標的元素的值
Af2(x)運算過程如下:目的用于生成下一個隨機數(shù),方法可以是線性同余,舉例如下:
#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后的余數(shù),假定A數(shù)組的大小為256 temp_A數(shù)組的生成:
temp_A根據(jù)A生成,每進行Z次分組加密后,就根據(jù)A生成一次temp_A,方法是:
1、A[n]=Af2(A[n])根據(jù)A[η]生成下一個隨機數(shù)并賦給A[η]
2、temp_A[n]=Af3(Α[η])取A[η]除以A數(shù)組大小的余數(shù) Bfl(X)運算過程如下:
3、s2=Bf2(s2)根據(jù)s2生成下一個隨機數(shù) 4、temp_s2=Bf3(s2)取s2除以B數(shù)組大小的余數(shù)
5、返回temp_B數(shù)組中的第temp_s2個下標的元素的值
Bf2 (x)運算過程如下:目的用于生成下一個隨機數(shù),方法可以是線性同余 X= (((x * 1103515245 + 12345)) & 0x7fffffff);,
Bf3 (X)運算過程如下:目的用于取余
temp_x=(BYTE)x;取除以256后的余數(shù),假定B數(shù)組的大小為256 temp_B數(shù)組的生成:
temp_B根據(jù)B生成,每進行Z次分組加密后,就根據(jù)B生成一次temp_B,方法是: l、B[n]=Bf2(B[n])根據(jù)B [η]生成下一個隨機數(shù)并賦給B [η]
2> temp_B [n] =Bf3 (B [η])取B [η]除以B數(shù)組大小的余數(shù)加密過程:
設(shè)有某一大分組明文數(shù)據(jù)N1,N2,N3,……Nx,每個分組數(shù)據(jù)的長度為一個字節(jié),加密方法如下:
一、對明文N進行第一次加密
1、首先對第一個分組明文&進行加密
對數(shù)組A進行變換,生成新的隨機數(shù)組A: A[i]=Af2(A[i]),方法可以是線性同余法,其中i是從I到Z,以下不再累述。
[0007]生成數(shù)組temp_A,取A[η]除以A數(shù)組大小的余數(shù),然后放置到temp_A中:temp_A[i] =Af3 (A[i])
對隨機種子一 si進行變換,生成新的隨機種子si:sl=Af2(sl),方法可以是線性同余法
取是臨時種子temp_sl,取si除以A數(shù)組大小的余數(shù),方法是temp_sl=Af3 (si)取得加密密碼X1,即temp_A數(shù)組中的第temp_sl個下標的元素的值,方法是-Xi=temp_A[temp_sI]
將明文N1與X1進行異或操作,得出中間密文M1
2、接著對第二個分組明文隊進行加密
對隨機種子一 Si進行變換,生成新的隨機種子si:sl=Af2(sl),方法可以是線性同余法
取是臨時種子temp_sl,取si除以A數(shù)組大小的余數(shù),方法是temp_sl=Af3 (si)取得加密密碼X2,即temp_A數(shù)組中的第temp_sl個下標的元素的值,方法是:X2=temp_A[temp_sI]
將明文隊與)^進行異或操作,得出中間密文M2
3、接著對第三個分組明文乂進行加密
對隨機種子一 Si進行變換,生成新的隨機種子si:sl=Af2(sl),方法可以是線性同余法
取是臨時種子temp_sl,取si除以A數(shù)組大小的余數(shù),方法是temp_sl=Af3 (si)取得加密密碼X3,即temp_A數(shù)組中的第temp_sl個下標的元素的值,方法是:X3=temp_A[temp_sI]
將明文乂與夂3進行異或操作,得出中間密文M3 4、當(dāng)加密到第Z個分組時(Z>=1,Z〈=A的元素個數(shù),通常為256)先進行一次數(shù)組A的變換,再進行加密,即每加密到一個Z分組的大小,就進行一次數(shù)組A的變換。
[0008]5、如此類推,直至加密到Nx得出中間密文Mx
二、對中間密文M進行第二次加密
1、首先對第一個中間密文1^進行加密
對數(shù)組B進行變換,生成新的隨機數(shù)組B: B[i]=Bf2(B[i]),方法可以是線性同余法,其中i是從I到Z,以下不再累述。
[0009]生成數(shù)組temp_B,取B[i]除以B數(shù)組大小的余數(shù),然后放置到temp_B中:temp_B[i]=Bf3 (B[i])
對隨機種子二 s2進行變換,生成新的隨機種子s2:s2=Bf2(s2),方法可以是線性同余法
取是臨時種子temp_s2,取s2除以A數(shù)組大小的余數(shù),方法是temp_s2=Bf3 (s2)取得加密密碼