1. 程式人生 > >RSA演算法-例項分析

RSA演算法-例項分析

主要講解5個問題:

,6步生成公鑰和私鑰

,明文X的加密成密文Y與密文Y的解密

,例項分析

,為什麼說RSA是安全的?

,需要知道一點數論知識:

(1)互質:這個小學就學過了,如果兩個正整數,除了1之外,沒有其他公因子,就稱這兩個數是互質關係(coprime)

  (2)   尤拉函式:思考(任意給定一個正整數n,請問在小於等於n的正整數之中,有多少個與n構成關係?比如,在1到8之中,有多少個數與8構成互質關係?)

         計算這個值的方法就叫做尤拉函式,以Φ(n)表示。在1到8之中,與8形成的互質關係的是1,3,5,7,所以Φ(n)= 4。

一,(6步)

1,首先選兩個大素數,p,q

2,計算n,n = p*q

3,計算尤拉函式Φ(n)= (p-1)(q-1)

4,隨機取整數e,且1<e<Φ(n),e與Φ(n)互質

5,計算祕密值d,由de ≡ 1modΦ(n),,≡ 為互餘符號即≡號兩邊的數有相同的餘數

6,公鑰PK = (e,n),私鑰SK = (d,n)

二,設明文為X,密文為Y

則密文X經過加密之後的密文Y = Xemod n

  密文Y經過解密可得到明文X = Ydmod n

三,舉個例子說明一下:

1,為了方便計算,首先我們選取兩個小的素數,p = 3,q = 11

2,計算n,n = p*q = 3*11 = 33(100001這才六位二進位制數,一般都是1024位,重要的檔案有2048位的)

3,求出尤拉函式Φ(n) =  (p-1)(q-1)= (3-1)(11-1) = 20

4,取一個隨機數e=3,(1<e<20且e與20互質)

5,計算祕密數d,de ≡ 1mod Φ(n)因為1modΦ(n)= 1 恆成立,則此算式可以寫成de modΦ(n)= 1

    即3d mod 20 = 1 一個個試數解得d = 7

6,綜上得,公鑰PK = (3,33),私鑰SK = (7,33)

假設明文X= key,首先我們需要把它轉換成ASCII碼

01 02 03 04 05
06  07 08 09 10 11 12 13
a b c d e f g h i j k l m
14 15 16 17 18 19 20 21 22 23 24 25 26
n o p q r s t u v w x y z

這裡我們需要注意:如果X過大,則需要對其盡行分組,如本題X——11,05,25

對X進行加密的密文Y= Xe mod n 即 Y=Xmod 33 ——>113mod 33 = Y mod 33 得Y= 11

                                                                                        053mod 33 = Y mod 33 得Y= 26

                                                                                        253mod 33 = Y mod 33 得Y= 16

對Y進行解密的明文X= Ydmod n 即 X = Y7mod 33——>117mod 33 = X mod 33 得X= 11

                                                                                        267mod 33 = X mod 33 得 X= 05

                                                                                        167mod 33 = X mod 33得 X= 25

四,為什麼說RSA是安全的呢?

我們知道此過程一共用到了6個數  p,q,n,Φ(n),e,d

而公鑰中的e,n是公開的,其餘4個數我們是不知道的 

假如我們採取暴力破解的方法:我們只需要解出d,也就知道了私鑰

1,要解出d,de= 1mod Φ(n),需要解出e,Φ(n)

2,Φ(n)= (p-1)(q-1),需要解出p,q

3,n = p*q,也即是需要對n 進行分解,由上面的例項,我們也許可能回想,這不是很簡答的事嗎,但是當p,q超級大時,而我們目前的技術還無法分解兩個超大素數

所以,就目前來說,時安全的。

而目前被破解的最長RSA金鑰是(232個十進位制數)768個二進位制數,而我們用的一般為1024位或者2048位。所以限制人類分解大整數的是計算機的計算能力,相信如果有一天真正的量子計算機問世後,又會引發一輪安全加密競賽。