RSA算法和證明

1977 年由羅納德·李維斯特(Ron Rivest)、阿迪·薩莫爾(Adi Shamir)和倫納德·阿德曼 (Leonard Adleman)一起提出,因此名爲 RSA 算法。

RSA 算法中公私鑰的產生

1 隨機選擇兩個不相等的質數 p 和 q p = 11, q = 29
2 計算 p 和 q 的乘積 n(明文小於 n) n = p× q = 11 * 29 = 319
3 計算 n 的歐拉函數 v=φ(n) 歐拉函數是小於或等於n的正整數中與n互質的數的數目。所謂的互質,就是最大公約數爲1。
  • φ(8),中1~8與8互質的數由1,3,5,7,因此 φ(8)=4。
  • 歐拉函數是積性函數:若m,n互質,φ(mn) =φ(m)φ(n) 。
  • 由於p、q都是質數,φ(p)=p-1,φ(q)=q-1,那麼,φ(n)=φ(pq)=φ(p)φ(q)=(p-1)(q-1)

v=φ(319)=(11-1)(29-1) = 280

4 隨機選擇一個整數 k
  • 1< k < v,且 k 與 v 互質
例子選擇 k = 187
5 計算 k 對於 v 的模反元素 d (d × k)%v = 1。也就是在模 v 中的 d ≡ k-1 (mod v)

例子結果爲3 (3*187)% 280 = 561%280 = 1

6 公鑰:(k,n) (187,319)
7 私鑰:(d,n) (3,319)

RSA 算法加解密流程

1 加密 c ≡ m^k (mod n),m 爲明文,c爲密文 明文123。
  • 以公鑰加密:c≡123^187≡161(mod 319)
  • 以私鑰加密:c≡123^3≡140(mod 319)
2 解密 m ≡ c^d (mod n) 以私鑰加密,用公鑰解密;以公鑰加密,用私鑰解密
  • 以公鑰加密,以私鑰解密:m≡161^3≡123(mod 319)
  • 以私鑰加密,以公鑰解密:m≡140^187≡123(mod 319)

證明

條件和相關的定理

推導 

網上不少資料在推導中,只是給出了第一種情況,即明文m和n=qp互質的情況,如果q和p的數值遠大於m是沒有問題,但是不見得這個條件成立,而且也無需這個條件。第二種情況,對於我這種數學渣渣來講,是很精巧的計算,參考自 https://wenku.baidu.com/view/5200777565ce05087732133e.html

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章