數(shù)據(jù)傳輸中二叉樹與RSA相結(jié)合數(shù)據(jù)加密的應(yīng)用
針對網(wǎng)絡(luò)傳輸?shù)奶攸c,我們提出了一個將二叉樹與RSA相結(jié)合的加密方法。即先用RSA方法加密密鑰矩陣,然后用二叉樹的遍歷產(chǎn)生的不同密鑰數(shù)據(jù)矩陣對數(shù)據(jù)進(jìn)行加密。
一、 RSA加密算法簡介
RSA加密算法是基于這樣一個數(shù)論事實:將兩個大素數(shù)相乘十分容易,但要分解它們的乘積卻極端困難。RSA的算法簡單表示如下:
(1)選取兩個大素數(shù)P和Q。計算N=PxQ,N是公開的;φ(n)=(P—1)(Q-1),φ(n)是保密的。
(2)任意選取整數(shù)e,使得gcd(e,φ(n))=1,計算d使得exd=l modφ(n)。
(3)加密公式:C=MemodNo解密公式:M=Cd mod No其中C表示密文,M表示明文。
RSA方法使用兩個密鑰,一個是公共密鑰,另一個為私有密鑰,a如用其中一個密鑰對某信息加密,則可以用另一個密鑰對該密文解密。 RSA的缺點主要有:
A)產(chǎn)生密鑰很麻煩,受到素數(shù)產(chǎn)生技術(shù)的限制。
B)分組長度太大,使運算代價很高,尤其是速度較慢;且隨著大數(shù)分解技術(shù)的發(fā)展,這個長度還在增加,不利于數(shù)據(jù)格式的標(biāo)準(zhǔn)化。
因此,可以讓RSA做加密算法的初始化工作。本算法就是讓RSA產(chǎn)生加密的密鑰矩陣。用密鑰矩陣來具體實施大量數(shù)據(jù)的加密工作。
二、加密算法
(1)首先產(chǎn)生兩個大素數(shù)P,Q。并使得:N=PxQ,根據(jù)公式gcd(e,φ(n))=1(其中φ(n)=(P-1)(Q-1),得到(e,N>;由公式:exd=l modφ(n))得到<d,N)。(e,N>、(d,N>表示數(shù)據(jù)序列。F=(P-1)(Q-1)。產(chǎn)生密鑰數(shù)據(jù)矩陣A,A為KxM階,其中K)得到<d,N)。(e,N>、(d,N>表示數(shù)據(jù)序列o F=(P-1)(Q-1)。
(2)產(chǎn)生密鑰數(shù)據(jù)矩陣A,A為KxM階,其中K>2,M>0;且A中任意兩元素不相同,Aij都為r字節(jié)。并在加密端利用RSA算法對矩陣A進(jìn)行加密操作,產(chǎn)生新的密鑰矩陣A’,并發(fā)送給解密端。加密公式為:Aij,=(Aij)emd.No此公式中符號表示求余數(shù)。并用A生成二叉樹B。
(3)在解密端利用公式Aij=(Aij')d modN得到原始矩陣Ao用A生成二叉樹B。
(4)數(shù)據(jù)加密時在加密端,從任意結(jié)點遍歷,得到新矩陣Aij",并得到Aij中所有元素在A中的位置,即得到K和M,使得A:; =Akni。取出一組數(shù)據(jù)DATA,DA’雅為S×r階矩陣形式(2<S<K,2<T<M)q若S<K或者T<朋,則缺少的位用0補(bǔ)。即DATA=SXT,直到DATA轉(zhuǎn)換成K×M階DA-TA';然后取AijXORDA TA7,XOR表示取異或;再用DA TA各的任意n位與DATA;cu互補(bǔ)的8r-n位組成新的DA.TA”,用DATA'd余下的位與DA TA7刪余下的位組成新的DATA。完成了取出數(shù)據(jù)的加密,并把加密過的數(shù)據(jù)發(fā)送到解密端。此步驟既實現(xiàn)了混淆,又實現(xiàn)了擴(kuò)散,這兩個在加密過程中的基本原則。
(5)重復(fù)步驟(3),步驟(4)進(jìn)行加密。當(dāng)完成二叉樹遍歷,就重新生成密鑰數(shù)據(jù)矩陣A,并重復(fù)步驟(3),步驟(4)即可完成大批量數(shù)據(jù)的加密。
解密端的解密算法是加密算法的逆算法。
小知識之RSA
RSA公鑰加密算法是1977年由羅納德·李維斯特(Ron Rivest)、阿迪·薩莫爾(Adi Shamir)和倫納德·阿德曼(Leonard Adleman)一起提出的。當(dāng)時他們?nèi)硕荚诼槭±砉W(xué)院工作。RSA就是他們?nèi)诵帐祥_頭字母拼在一起組成的。







