RSA加密演算法

2022-09-12 15:18:20 字數 1193 閱讀 5964

rsa是一種公鑰加密演算法,可用於公鑰加密和數字簽名

rsa加密過程可用下面的公式表達

密文=(明文^e) mod n

rsa的密文等於明文代表數字的e次方除以n 的餘數

整個過程十分簡單,只要知道e,n就能對明文進行加密。所以e,n的組合就是公鑰。寫成「公鑰是」

rsa解密也十分簡單可用下面公式表達:

明文=(密文^d)mod n

所以d,n代表私鑰(由於n是公鑰的一部分,所以也可用說d是私鑰)

下面就介紹如何生成e,d,n

rsa金鑰生成的步驟:

(1)求n

(2)求l (l是僅在生成金鑰對的過程中使用的數)、

(3)求e

(4)求d

1.求n

首先找到兩個很大的素數p,q

n=p*q  (如果p,q太小密碼會變得很容易破譯)

2.求l

l是p-1,q-1的最小公倍數用lcm(p-1,q-1)表示

l=lcm(p-1,q-1)

3.求e

e是乙個比1大,比l小的數。此外,e和l互質(最大公約數為1)

1

lgcd(e,l)=1

找出gcd(e,l)=1的數,還要使用偽隨機數生成器,生成大於1,小於l的e。再判斷gcd(e,l)是否等於1.可用歐幾里得輾轉相除法求最大公約數

滿足gcd(e,l)是為了保證一定存在解密所需要的d

求出e,n就生成了公鑰

4.求d

數d由e計算得到。d、e、l之間必須存在下列關係:

1

le*d mod l=1

求出d 就是擁有了私鑰

準備兩個質數p=17,q=19

n=17*19=323

l=lcm(17-1,19-1)=lcm(16,18)=144

有gcd(e,l)=1 可用得到e=5,7,11,13,17.……

e的選擇有很多,這裡選5,所以公鑰是

d*emod l=1 e=5 可用找到d=29

所以私鑰為

1.加密

要加密的明文必須是小於n的數

假設明文為123

密文=123^5 mod 323 =225

2.解密

明文=225^29 mod 323=123

RSA加密演算法

素數是這樣的整數,它除了能表示為它自己和1的乘積以外,不能表示為任何其它兩個整數的乘積。例如,15 3 5,所以15不是素數 又如,12 6 2 4 3,所以12也不是素數。另一方面,13除了等於13 1以外,不能表示為其它任何兩個整數的乘積,所以13是乙個素數。素數也稱為 質數 二 什麼是 互質數...

RSA加密演算法

演算法的描述 1.選取兩個素數p,q 2.計算n p q,fn p 1 q 1 3.選擇乙個整數e,使得e與fn的最大公約數為1,e將會用於對資料進行加密。4.計算出乙個整數d,使得d e除fn的餘數為1。d用於對密文進行解密,還原出明文。5.假設明文為m,密文為c。如果需要對原文進行加密,則進行如...

RSA加密演算法

一 rsa是公鑰加密演算法之一,該演算法的數學基礎是 1 初等數論的euler定理,即 若整數a與整數n互素,則a n 1 mod n 其中,n 為尤拉函式。2 大整數分解很困難,即給定乙個大整數n,將其分解為n p q,兩個素數乘積十分困難。二 rsa基本原理 1 金鑰的生成。選擇大素數p,q,計...