RSA算法是最常用的非對稱加密算法。其既可以用於加密,也可以用於數字簽名。RSA的安全基於大數分解的難度。
公鑰KU |
n:兩素數p和q的乘積(p,q必須保密) e:與(p-1)(q-1)的乘積互質 |
私鑰KR |
d:e-1(mod(p-1)(q-1)) n: |
加密 |
c ≡ me mod n |
解密 |
m ≡ cd mod n |
算法描述:
1. 選擇一對不同的、足夠大的素數p,q。計算n = pq。
2. 計算f(n) = (p-1)(q-1)。對p,q保密,不讓任何人知道。
3. 找一個與f(n)互質的數e,且1<e<f(n)。
4. 計算d,使得de≡ 1 mod f(n)。
5. 加密時,先將明文變換成0至n-1的一個整數m。設密文爲c,則加密過程爲c ≡ me mod n。解密過程爲m ≡ cd mod n。
其中≡符號表示數論中的同餘符號。
RSA算法缺點:產生密鑰麻煩,難以做到一次加密。爲保證安全性,n至少600bits以上,運算代價高。