1 RSA 算法概述

          1.1 RSA的實現(xiàn)

          RSA 算法,也就是加密解密的過程比較容易理解:

          1.1.1 公鑰密鑰對的生成

          a   生成兩個大素數(shù) p q.

          b   n = p * q and f(n) = (p-1) (q-1)

          c   選擇 b (1< b < f(n)) 使得 gcd(b, f(n))=1, bf(n)互質(zhì)

          d   找到 a = b^(-1) mod f(n), a*b=1 (mod f(n))

          e   結(jié)果:(n,b)為公鑰對; (p,q,a) 密鑰對.

          舉例說明:  . 我們選擇 p=11  q=13, 則有:

                     n = 11*13=143

                     f(n)=(p-1)(q-1)=10*12=120;

                     . 選擇b=37 , (我們有gcd(37,120)=1)

                     我們可以計算出 a=13,  (a*b=481=1 mod 120)

                     . 于是有(143,37)為公鑰對;(11,13,13)為密鑰對.

          1.1.2 加密解密

          對于任意 x,y?Zn(自然數(shù)),依習(xí)慣, x為原文,y為密文. E( x)為加密, D(y) 為解密.

          我們有E(x) = x^b (mod n)     D(y) = y^a (mod n)

          舉例說明: 由上例,我們有原文 x=2

                     加密:y= x^b mod n=2^37 mod 143 = 12.

                     解密:x= D(y) = y^a mod n = 12^13 mod 143 =2.

          顯然, 實際應(yīng)用時是不可能這么簡單的。從公鑰對 (n,b), 得到 a, p,q或是f(n) 在計算上應(yīng)該是不可行的。

          1.2 RSA 成立的證明

          根據(jù)前面的例子,我們可以看到對于任意的x<n (實際應(yīng)用中,我們把原文分成許多長度位u位的小段, 2^u<=n, 使得x<n) , 通過加密再解密的過程都可以得到原文x, 下面給出一般性的證明:

          由上,我們有:    x= D(y) = D(x^b) = (x^b)^a = x^ab  (mod n)

          也就是說我們需要證明上式成立,即:

                        x ^ ab mod n = x         (1)

          a.首先我們有恒等式: X^(p-1) (mod p) =1, 其中p是素數(shù),X是非零整數(shù)。

          譬如有 X=3, p=7, 則有3^6 mod 7 = 729 mod 7 =1

          (這個等式來自費馬定理,不要再試圖讓我給出這個定理的證明哦!據(jù)說這個定理到現(xiàn)在還沒有人能夠完全證明.!對數(shù)論感興趣的同學(xué)可以去參考[1]或是去Google搜索fermat theorem)

          b. 于是我們有X^(p-1)(q-1) mod p = (X^(p-1))^(q-1) mod p = 1^(q-1) mod p=1

                X^(p-1)(q-1) mod p=1

          c. 同樣對于任意整數(shù)k, X^k(p-1)(q-1) mod p=1

          d. 上等式兩端同時乘X,則有 X^(k(p-1)(q-1)+1) mod p = X

          e. X^(kf(n)+1) mod p = X

          f. 因為ab mod f(n)=1, 我們可以寫成 ab = k’f(n)+1

          g. 因為kk’可以是任意整數(shù),所以由e,f可以的到:

                 X^ab mod p = X

          h. 同樣的,我們有 X^ab mod q = X

          i. 因為p,q都是素數(shù),我們有 X^ab mod n = X.  即(1)式

          posted on 2005-09-23 16:55 Java筆記 閱讀(501) 評論(0)  編輯  收藏

          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導(dǎo)航:
           
           
          主站蜘蛛池模板: 合水县| 老河口市| 梁河县| 常州市| 合水县| 遂平县| 来安县| 溆浦县| 塔城市| 玉林市| 杭锦旗| 河池市| 天柱县| 肃北| 瑞金市| 炉霍县| 鲁甸县| 大名县| 宁河县| 井冈山市| 修武县| 富宁县| 永平县| 东辽县| 温泉县| 北京市| 突泉县| 水城县| 嘉鱼县| 大悟县| 南涧| 区。| 宁化县| 仪征市| 璧山县| 岳普湖县| 积石山| 桦川县| 随州市| 莎车县| 西青区|