RSA加密算法詳解

什麼是RSA算法?

RSA加密算法是一種非對稱加密算法。在公開密鑰加密和電子商業中RSA被普遍使用。RSA是1977年由羅納德·李維斯特(Ron Rivest)、阿迪·薩莫爾(Adi Shamir)和倫納德·阿德曼(Leonard Adleman)一塊兒提出的。當時他們三人都在麻省理工學院工做。RSA就是他們三人姓氏開頭字母拼在一塊兒組成的。算法

大數的質因素分解決定RSA算法的可靠性,讓合理時間內破解加密數據成爲不可能。安全

要了解RSA加密算法首先要了解素數函數

什麼是非對稱加密?

非對稱加密須要兩個密鑰,一個公開密鑰一個私有密鑰。post

使用公鑰加密的數據只能用私鑰解開,因此公鑰能夠公開給他人,而私鑰要保護起來。測試

其實公鑰就像,私鑰就像鑰匙,把給別人鎖住數據,而後傳遞回來用鑰匙解開取出數據。這樣就算中途被他人截獲了沒有鑰匙也無法查看數據內容。ui

歐拉函數

歐拉函數是說,對正整數 n,歐拉函數 \phi(n) 是小於或等於 n 的正整數中與 n 互質的數的數目。加密

好比 \phi(8) = 4 由於 81,3,5,7 互質。code

有一種狀況 \phi(n) 很好計算就是當 n 等於素數時,由於素數和小於它的全部正整數互質,因此當 n 等於素數時 \phi(n) = n-1 ,且當 a,b 都是素數時get

\phi(a×b)=\phi(a)×\phi(b)

歐拉定理

歐拉定理(也稱費馬-歐拉定理)是一個關於同餘的性質。io

歐拉定理代表,若 n,a 爲正整數,且 n,a 互素,則

a^{\phi(n)}\equiv1\ (mod\ n)

RSA加密算法

RSA加密算法是根據一個容易運算可是若是沒有特殊信息逆運算很是困難的函數,

m^e\ mod\ n \equiv c,這很是容易計算 c ,可是給定 e,n,c 卻很困可貴到 m

那麼怎麼讓它的逆運算也容易呢?

要有一個 dc^d\equiv m\ (mod\ n) 成立,這公式也能夠寫成 m^{e×d}\equiv\ m\ (mod\ n) ,這樣只要知道 d 就能夠獲得 m 了。

那麼怎麼計算 d ,這時候就要用到歐拉定理

m^{\phi(n)}\equiv1\ (mod\ n)

也能夠寫成

m^{k×\phi(n)+1}\equiv m\ (mod\ n)

就是將原等式的任何數k次方,而後再乘以m

m^{e×d}\equiv m\ (mod\ n)m^{k×\phi(n)+1}\equiv m\ (mod\ n)

就能夠算出d等於

\frac{k×\phi(n)+1}e

這時e就至關於公鑰,d就至關於私鑰。

那麼RSA加密算法過程爲:

1)第一步是首先找出兩個大質數 p1,p2 ,大質數可使用兩步生成。(具體能夠看費馬小定理

  1. 隨機生成一個大數
  2. 測試是否是素數

而後將 p1,p2 相乘獲得 n ,根據歐拉定理可知 \phi(n)=(p1-1)×(p2-1)

2)第二步找到一個奇數 e ,並且與 \phi(n) 互質。

3)根據上面公式計算出一個正整數 d ,(有人證實若是 d<\frac{1}3×n^{\frac{1}4} 能夠根據 n,e 頗有效的推出 d ,因此 d 必須足夠大)

4)將 en 發送給他人加密數據(m),獲得 c\equiv m^e\ (mod\ n) (消息 m 是小於 n 的正整數,若是 m 太大能夠分段)。

5)取回加密數據 cc^d\ mod\ n 就等於消息 m

安全性

根據上面步驟能夠看出要破解加密必需要獲得 d ,而獲得 d 就要找到 p1,p2 ,這就要對 n 進行質因素分解,然而根據如今計算機的速度對一個大數在一個合理時間內質因素分解很是困難。

相關文章
相關標籤/搜索