RSA 非對稱加密演算法

2021-07-26 12:49:05 字數 2005 閱讀 8978

1.對稱加密:

- 甲方選擇某一種加密規則,對資訊進行加密;

- 乙方使用同一種規則,對資訊進行解密。

非對稱加密:

- 乙方生成兩把金鑰(公鑰和私鑰)。公鑰是公開的,任何人都可以獲得,私鑰則是保密的。

- 甲方獲取乙方的公鑰,然後用它對資訊加密。

- 乙方得到加密後的資訊,用私鑰解密。

2. 尤拉定理:rsa演算法的核心

可以大大簡化某些運算,比如,7和10互質,根據尤拉定理,

已知 φ(10) 等於4,所以馬上得到7的4倍數次方的個位數肯定是1。

如果n是乙個質數,那麼這就是費馬小定理。

3. 模反元素:

如果兩個正整數a和n互質,那麼一定可以找到整數b,使得 ab-1 被n整除,或者說ab被n除的餘數是1。

這時,b就叫做a的」模反元素」。

生成秘鑰的步驟:

a. 隨機選擇兩個不相等的質數p和q。

b. 計算p和q的乘積n。

c. 計算n的尤拉函式φ(n),φ(n) = (p-1)(q-1)。

d. 隨機選擇乙個整數e,條件是1< e < φ(n),且e與φ(n) 互質,實際應用中,常常選擇65537,但要留心是否互質。

e. 計算e對於φ(n)的模反元素d。其實就是擴充套件歐幾里得解乙個二元一次方程。

f. 將n和e封裝為公鑰,n和d封裝為私鑰。

可靠性:

假設已知n 和 e,那麼我們如果求出φ(n)求可以求出來d,但是當n很大時,很難做因數分解求得p和q的值,也就無法求出來φ(n)。

如何加密:

加密使用的是公鑰,假設加密的資訊是m,m必須是乙個整數且小於n,字串可以利用其對應的ascii碼或者unicode值。 me

≡ c (mod n)

我們通過這個式子加密後得到c的值,並傳遞c。

如何解密:

解密使用的是私鑰, cd

≡ m (mod n) 通過這個就可以利用私鑰得到原文m。

如果m的資訊量太大,那麼我們一般採取分段加密或對對稱性加密的金鑰進行非對稱加密。

加解密正確性的證明:

我們來證明下面這個式子: cd

≡ m (mod n)

因為,根據加密規則 me

≡ c (mod n)

於是,c可以寫成下面的形式:

c = me

- kn

將c代入要我們要證明的那個解密規則: (m

e−kn

)d≡ m (mod n)

它等同於求證 me

d ≡ m (mod n)

由於 ed ≡ 1 (mod φ(n))

所以 ed = hφ(n)+1

將ed代入: mh

φ(n)

+1≡ m (mod n)

接下來,分成兩種情況證明上面這個式子。

(1)m與n互質。

根據尤拉定理,此時 mφ

(n) ≡ 1 (mod n)

得到 (mφ

(n))

h × m ≡ m (mod n)

原式得到證明。

(2)m與n不是互質關係。

此時,由於n等於質數p和q的乘積,所以m必然等於kp或kq。

以 m = kp為例,考慮到這時k與q必然互質,則根據尤拉定理,下面的式子成立: (k

p)q−

1 ≡ 1 (mod q)

進一步得到 ((

kp)q

−1)h

(p−1

) × kp ≡ kp (mod q) 即 (

kp)e

d ≡ kp (mod q)

將它改寫成下面的等式 (k

p)ed

= tq + kp

這時t必然能被p整除,即 t=t』p (k

p)ed

= t』pq + kp

因為 m=kp,n=pq,所以 me

d ≡ m (mod n)

參考資料:

非對稱加密演算法 RSA

1 非對稱加密過程 國內使用的是雙證書體系 即使用者同時擁有簽名證書 和加密證書 兩張證書。簽名證書 是使用者的身份驗證是和ca協商的結果 加密證書 是用來對資訊進行加密,是使用者和秘鑰管理系統生成 過程是生成公鑰和私鑰的過程,基於rsa演算法實現 過程是ca對使用者的身份進行簽名,目的是驗證a的身...

非對稱加密演算法 RSA

rsa加密演算法於1977年由美國麻省理工學院的ronal rivest,adi shamir和len adleman三位年輕教授提出,並以三人的姓氏rivest,shamir和adleman命名為rsa演算法。這三位科學家榮獲2002年度圖靈獎,以表彰他們在演算法方面的突出貢獻。該演算法利用了數論...

非對稱加密演算法 RSA

rsa加密演算法是一種 非對稱加密演算法。rsa 公開金鑰密碼體制 加密金鑰 即公開金鑰 pk 是公開資訊,而解密金鑰 即秘密金鑰 sk是需要保密的。加密演算法 e和解密演算法 d也都是公開的。雖然解密金鑰 sk是由公開金鑰 pk決定的,由於無法計算出大數 n的尤拉函式 phi n 所以不能根據 p...