1. 程式人生 > >密碼學指RSA密碼

密碼學指RSA密碼

RSA加密演算法

前面講了幾個對稱加密演算法,今天就談一談非對稱加密演算法。非對稱加密演算法的出現源於對稱加密演算法的侷限性:分發金鑰的重要與困難性,無法進行數字簽名等原因。非對稱加密演算法有兩把鑰匙,一把加密金鑰,一把解密金鑰。兩者既數學相關但又無法相互推導。
非對稱加密演算法依賴於單向陷門函式。什麼是單向函式,即對於y=f(x),知道x可求y,但是知道y不能求x。而單向陷門函式就是在單向函式的基礎上加了個陷門,即只有知道陷門資訊的人才能通過y求x,而這個陷門資訊就是私鑰。RSA演算法所使用的單向陷門函式為大素數分解的難題(數學上還沒有完全證明反向不可推)。
RSA演算法步驟:
1.隨機選取兩個大的素數p,q
2.計算n=p*q,φ(n) = (p-1)(q-1),然後將p,q扔掉
3.隨機選取e(1< e < φ(n)),滿足gcd(e, φ(n))=1,即e與φ(n) 互質
4.計算d,使得d滿足de ≡ 1 (mod φ(n))
5.加密:c=m^e mod n; 解密:m=c^d mod n(其中c為密文,m為明文,n為公共模數,e為加密指數,d為解密指數)

例題(計算必考)
1.p=17,q=11,e=7,m=123,求c。
解:
n=p·q=11·17=187
φ(n)=(p-1)(q-1)=16·10=160
d·e ≡ 1 (mod φ(n))
即d·7 ≡ 1 (mod 160)
160=22·7…6
7=1·6…1
1=7-6=7-(160-22·7)
=23·7-160 (輾轉相除法)
∴(23·7-160)mod 160=1
∴d=23
∴c=m^e mod n=123^7 mod 187=183

2.p=17,q=31,e=7,m=2,求c。
解:
n=p·q=17·31=527
φ(n)=(p-1)(q-1)=16·30=480
d·e ≡ 1 (mod φ(n))
d·7 ≡ 1 (mod 480)
480=68·7…4
7=1·4…3
4=1·3…1
1=4-3=4-(7-4)
=2·4-7
=2·(480-68·7)-7
=2·480-137·7

∴1=(2·480-137·7) mod 480
=[2·480-(-480+137)·7] mod 480
∴ d=480-137=343
∴c=m^e mod n=2^7 mod 527=128

RSA加密演算法可以解決的問題:

  • 加密解密
  • 數字簽名
  • 金鑰的分發

數字信封/金鑰分發/RSA Speed:
甲先使用對稱演算法加密要傳送的資訊,然後用乙的公鑰加密對稱金鑰,然後將加密後的資訊和金鑰都發給乙,乙拿到之後先用乙的私鑰將對稱金鑰解密,然後用對稱金鑰解密資訊得到密文。這樣既能解決單純的非對稱密碼加密解密速度過慢的問題,也能夠完成對稱金鑰的金鑰分發,此時的非對稱密碼就相當於一個信封,將對稱金鑰封起來,一舉三得。

在這裡插入圖片描述