非對稱加密算法 RSA


74mod127^4 mod 12 很好算
7xmod12=87^x mod 12 = 8 ,xx 如何求就比較複雜,特別是當是數字特別大時,求離散對數非常困難耗時。
RSA 加密就是利用的這點。

在 RSA 加密中,明文/密鑰/密文 都是數字。
RSA 加密可以用下面公式來概括:
=EmodN 密文 = 明文^E mod N
”E 和 N 的組合“就是公鑰。

解密可以用下面的這個公式來概括:
=DmodN 明文 = 密文^D mod N
所以 ”D 和 N的組合“ 就是私鑰。

如何計算得到 N E D

1 求 N

  1. 隨機獲取兩個大質數:ppqq
  2. N=pqN = p * q

2 求 L (在生成密鑰對過程中使用)

L 是 p1p - 1q1q - 1最小公倍數L=lcm(p1,q1)L = lcm(p - 1, q - 1)

3 求 E

E 與 L 的關係:
1<E<L1 < E < L
gcd(E,L)=1gcd(E, L) = 1 (E 和 L 的最大公約數 是 1, 這是爲了保證存在解密時用到的數 D)
可以用僞隨機數生成器產生候選數,然後使用 輾轉相除法 判斷是否滿足 gcd(E,L)=1gcd(E, L) = 1

4 求 D

數 D 是根據數 E 計算得到的。D 、E、L 之間滿足下列關係
1<D<L1 < D < L
EDmodL=1E * D mod L = 1

實例

生成密鑰對

1> p = 17, q = 19 那麼 N = 323
2>
L=lcm(p1,q1)L = lcm(p - 1, q - 1)
=lcm(16,18)= lcm(16, 18)
$= 144 $
3> E 要滿足 gcd(E,L)=1gcd(E, L) = 1,那麼 E 有很多可取的 比如 5、7、等 ,這裏取 E = 7
4> D 要滿足 EDmodL=1E * D mod L = 1 , D = 103
EDmodL=7103mod144E * D mod L = 7 * 103 mod 144
=721mod144= 721 mod 144
=1= 1
此時便得到了密鑰對:
公鑰:E = 7 N = 323
私鑰:D = 103 N = 323

加密

要加密的明文必須是小於 NN 的數,也就是小於 323 的數。這裏假設明文是 250, 公鑰 $ E = 7$ 、N=323N = 323, 帶入公式:
EmodN=2507mod323=211 明文^E mod N = 250^7 mod 323 = 211
因此密文就是 211。

解密

對密文 211 解密。私鑰是:D=103D = 103N=323N = 323
DmodN=211103mod323=250 密文^D mod N = 211^{103} mod 323 = 250
得到明文 250。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章