發(fā)布源:深圳維創(chuàng)信息技術(shù)發(fā)布時間:2020-11-23 瀏覽次數(shù): 次
由于公開密鑰加密具有很大的優(yōu)點, 許多研究人員悉心研究解決這一難題的算法。
其中一個較好的算法是由美國麻省理工學(xué)院的Rivest、Shamir 和Adleman 三人研究小組于 1978 年提出的RSA 加密算法, 該方法基于數(shù)論原理。
手機視頻加密軟件應(yīng)用先進的加密算法,使加密視頻在手機實現(xiàn)授權(quán)播放。
RSA 算法公開密鑰的產(chǎn)生(1) 選擇兩個大素數(shù)p 和q;(2) 計算n= p @ q 和z= (p- 1) @ (q- 1) ;(3) 選擇一整數(shù)e, 要滿足0< e< z , 且gcd(z, e) = 1;(4) 公開密鑰PK= { e, n} 。
RSA 算法私有密鑰的產(chǎn)生
1、 Euclid 擴展算法
RSA 算法中的私有密鑰通常利用Euclid 擴展算法來計算。
Euclid 擴展算法在數(shù)論中應(yīng)用廣泛, 它被用來求解形如ax=b(mod n) 的方程。
Euclid 擴展算法首先確定兩個整數(shù)x 和y, 滿足:xa+ yb= 1。
為了使x 和y 存在( x, y 不一定) , 必須有g(shù)cd(a,b) = 1。
它的算法(偽代碼) 描述如下:(1) 初始化a1= 1, a2 = 1,b1= 0,b2 = 1;(2) n1= q* n2 + r;(3) If (r= = 0) gcd( n1, n2) = n2 , a= a2 , b=b2 , 算法結(jié)束;(4) Else n1= n2, n2= r, t= a2, a2= a1- q*a2 , a1 = t,t= b2 , b2 = b1 - q* b2 ,b1 = t, 轉(zhuǎn)(2) 。
例1:找出x 和y, 使得7x+ 120y= 1。
其運算過程見表1。
表1 Euclid 擴展算法的運算過程
所以,7* ( - 17) + 120* 1= 1。
對于解形如ax=b(mod n) 的方程, 只要稍作變換即可。
例2:找出x, 使得7x=1(mod 120) 。
由例1得7* ( - 17) + 120* 1= 1, 可找出x= (- 17mod 120) = 103。
可以驗證7x= 7* 103= 721, 滿足721 mod 120= 1成立。
2 、擴展算法解出RSA 算法中的私鑰
RSA 中的私鑰d 要滿足deS 1(mod z) , d是e在模z下的乘法逆元, 因為e與z互素, 由模運算可知, 它的乘法逆元一定存在。
這個方程可以利用Euclid 擴展算法解出。
于是得到私鑰SK={d, n} 。
3 、RSA 算法中的加密和解密
若用整數(shù)M表示明文, 用整數(shù)C表示密文(M和C均小于n) , 則加密和解密運算為:
加密: C= Me( mod n) ;解密: M= Cd(mod n) 。
4 、RSA 算法實例
選擇兩個素數(shù), p= 11, q= 13, 得出 n=143, z= 120。
再選取一個與z= 120 互質(zhì)的數(shù),例如e= 7, 解方程7d= 1(mod 120) , 利用Euclid擴展算法可得出d= 103, 則公開密鑰= (n, e) =( 143,7) , 秘密密鑰= (n, d) = ( 143, 103) 。
設(shè)A 需要發(fā)送機密信息( 明文) m= 85 給 B, A 已經(jīng)從公開媒體得到了B 的公開密鑰(n, e) =( 143,7) , 于是A 可以算出加密值: c= m mod n= 85 mod 143= 123, 并發(fā)送給 B。
B 在收到密文c= 123 后, 利用只有自己知道的秘密密鑰計算: m= c mod n = 123的103次方mod143= 85, 所以, B 可以得到A 發(fā)來的真正的信息m= 85, 實現(xiàn)了解密。
Copyright © 2021 深圳市維創(chuàng)信息技術(shù)有限公司 版權(quán)所有