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...