rsa演算法中利用歐幾里得演算法求d詳細過程
rsa是第乙個也是使用的最廣泛的公鑰加密演算法,在2023年由r.rivest、adishamir和adleman三人發明,並以他們的名字命名。rsa演算法的安全性基於大數因子分解的困難性,下面介紹一下它的基本原理:
1、生成公鑰和私鑰
(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;
2、加密
將明文m分解成等長資料塊m1,m2,……,mi。加密時,按如下公式進行計算即可:
ci=(mi)e(mod n),密文c則由c1,c2,……ci組成。
3、解密
與加密一樣,按如下公式進行計算:
mi=(ci)d(mod n),明文m則由m1,m2,……,mi組成。
以上就是rsa演算法的公私鑰產生、加密和解密的過程。整個過程中,最難理解的部分應是1.5中的求私鑰d,很多課本提到的都是用歐幾里得演算法,但並未給出具體的計算過程,下面本人就通過乙個例項向大家介紹歐幾里得演算法在rsa中的應用。
例:令p=47,q=71,求用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=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的最終值。
此時,我們即可得到公鑰pk=(e,n)=,私鑰sk=,後面的加密和解密直接套相應公式即可。
RSA演算法中利用歐幾里得演算法求d詳細過程
正文 rsa是第乙個也是使用的最廣泛的公鑰加密演算法,在1978年由r.rivest adishamir和adleman三人發明,並以他們的名字命名。rsa演算法的安全性基於大數因子分解的困難性,下面介紹一下它的基本原理 1 選取兩個大素數 p和q 2 計算n p q 3 計算小於n並且與n互質的整...
歐幾里得演算法
歐幾里得演算法中,計算 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 歐幾里得演算...