做爲基礎的非對稱加密,RSA算法的核心思路是利用一個正向計算簡單而逆向窮舉幾乎不可能的數學公式計算數字化後的信息,由兩個惟一參數做爲公鑰和私玥對數據進行加密和解密。算法
這兩個密鑰保證瞭解密者不用擔憂密文被惡意篡改(密文被更改後解密會失敗),而因爲反向推算極爲困難且不須要私鑰參與加密,加密者也能夠保證數據的安全。安全
RSA算法的數學公式加密時爲: M 的 E 次方對 N 取模 = 餘數 C 。其中M爲明文,C爲密文,(E,N)爲公鑰加密
解密時爲: C 的 D 次方對 N 取模 = 餘數 M 。其中M爲明文,C爲密文,(D,N)爲私鑰。數學
顯然已知C,N,E求M極爲困難。基礎
(取模運算在兩數都爲正數時與取餘運算相同)數據
爲了保證兩密鑰惟一,選擇兩質數p,q,設其乘積爲N,解密
E能夠在一個限制內隨意設置,而D則由E簡單推得。一樣爲保證E,D惟一:選擇 q-1 , p-1 的乘積爲 L ,1<E<L且最大公約數爲1,同時,E 與 D 的乘積與 L 取模結果爲1。數字
(此處設置 L =( p - 1) × (q - 1) ,是爲了在 N = p × q 時,確保 E < q ×(p - 1) && p ×(q - 1),以免出現沒法取 D 的狀況)參數
至此,求得的 (E,D,N)即爲一組RSA密鑰對