我所理解的RSA加密算法

RSA簡介

  • 非對稱加密算法。有一對公私鑰組成。
  • 1977年由三位數學家RivestShamirAdleman 設計了一種算法,沒錯RSA是三個人名字的首字母。
  • 密鑰越長越難破解,1024位目前無法破解,因此1024位的RSA密鑰基本安全,2048位的密鑰極其安全。
  • 公私鑰的使用。公鑰是公開的,一般公鑰加密私鑰解密(當然也可以反過來,但不安全),另外,使用私鑰簽名,公鑰驗證簽名。

RSA原理

取一對RSA的公私鑰,需要了解歐拉函數歐拉定理 。這部分這裏有詳細介紹。在這我只總結下。
歐拉函數 —— 任意給定正整數n,請問在小於等於n的正整數之中,有多少個與n構成互質關係。
φ(n) 表示,例如 φ(8) = 4 (1, 3, 5, 7 與其有互斥關係)

歐拉定理 —— 兩個正整數a和n互質,則n的歐拉函數 φ(n) 可以讓下面的等式成立:
在這裏插入圖片描述
即,a的φ(n)次方 - 1 是 n 整數倍。

RSA公私鑰生成步驟

  • 選取兩個質數 p, q
  • n=p*qn轉化爲二進制表示,即爲RSA位數,位數越多越難破解)
  • 計算出n的歐拉函數 φ(n) = (p-1)(q-1)
  • 隨機選擇一個整數e, 條件是 1 < e < φ(n), 且 eφ(n) 互質。
  • 計算e對於φ(n)的模反元素d
  • ne封裝成公鑰,nd封裝成私鑰

ed ≡ 1 (mod φ(n))

RSA 實現

github(java,android實現)

參考資料

RSA算法原理

發佈了79 篇原創文章 · 獲贊 11 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章