RSA演算法中利用歐幾里得演算法求d詳細過程

2022-09-19 05:36:08 字數 1303 閱讀 3225

正文:

rsa是第乙個也是使用的最廣泛的公鑰加密演算法,在2023年由r.rivest、adishamir和adleman三人發明,

並以他們的名字命名。rsa演算法的安全性基於大數因子分解的困難性,下面介紹一下它的基本原理:

(1)選取兩個大素數:p和q;

(2)計算n=p*q;

(3)計算小於n並且與n互質的整數的個數,即尤拉函式ø(n)=(p-1)*(q-1);

(4)隨機選擇加密金鑰e,使1

(5)最後,利用euclid(歐幾里得)演算法計算解密金鑰d,使其滿足ed=1(mod ø(n))。

然後將(e,n)公開,即為公鑰pk,私人儲存好d,即為私鑰sk;

將明文m分解成等長資料塊m1,m2,……,mi。加密時,按如下公式進行計算即可:

ci=(mi)ˆe(mod n),密文c則由c1,c2,……ci組成。

與加密一樣,按如下公式進行計算:

mi=(ci)ˆd(mod n),明文m則由m1,m2,……,mi組成。

以上就是rsa演算法的公私鑰產生、加密和解密的過程。整個過程中,最難理解的部分應是1.5中的求私鑰d,

很多課本提到的都是用歐幾里得演算法,但並未給出具體的計算過程

下面本人就通過乙個例項向大家介紹歐幾里得演算法在rsa中的應用。

計算如下:

(1)n=pq=47*71=3337;

(2)ø(n)=(p-1)*(q-1)=46*70=3220;

(3)隨機選取e=79(滿足與3220互質的條件);

(4)則私鑰d應該滿足:79*d mod 3220 = 1;

那麼這個式子(4)如何解呢?這裡就要用到歐幾里得演算法(又稱輾轉相除法),解法如下:

(a)式子(4)可以表示成79*d-3220*k=1(其中k為正整數);

(b)將3220對79取模得到的餘數60代替3220,則變為79*d-60*k=1;

(c)同理,將79對60取模得到的餘數19代替79,則變為19*d-60*k=1;

(d)同理,將60對19取模得到的餘數3代替60,則變為19*d-3*k=1;

(e)同理,將19對3取模得到的餘數1代替19,則變為d-3*k=1;

當d的係數最後化為1時,(注:當k的係數先化為1時,令d=1,再帶入)

令k=0,代入(e)式中,得d=1;

將d=1代入(d)式,得k=6;

將k=6代入(c)式,得d=19;

將d=19代入(b)式,得k=25;

將k=25代入(a)式,得d=1019,這個值即我們要求的私鑰d的最終值。

後面的加密和解密直接套相應公式即可。

RSA演算法中利用歐幾里得演算法求d詳細過程

rsa演算法中利用歐幾里得演算法求d詳細過程 rsa是第乙個也是使用的最廣泛的公鑰加密演算法,在1978年由r.rivest adishamir和adleman三人發明,並以他們的名字命名。rsa演算法的安全性基於大數因子分解的困難性,下面介紹一下它的基本原理 1 生成公鑰和私鑰 1 選取兩個大素數...

歐幾里得演算法

歐幾里得演算法中,計算 x,y 的最大公約數的方法是輾轉相除,例如 26,15 26 15 1 11 15 11 1 4 11 4 2 3 4 3 1 1 3 1 3 0 可知,26,15 1 如果 x,y r,那麼有 ax by r,可以看出,上面的步驟實際上是可以直接得出 a,b 的 26 15...

歐幾里得演算法

輾轉相除法,又被稱為歐幾里德 euclidean 演算法,是求最大公約數的演算法。當然也可以求最小公倍數。以除數和餘數反覆做除法運算,當餘數為 0 時,取當前算式除數為最大公約數。可以使用遞迴實現,也可以使用迴圈實現。program algorithm code description 歐幾里得演算...