RSA 加密算法
RSA 加密算法是一種非對稱加密算法,是最先的公鑰密碼系統之一。算法
1978年,MIT 的 Ron Rivest,Adi Shamir 和 Leonard Adleman 三人一塊兒提出 RSA 加密算法安全
原理
- 選擇 2 個質數
p
和q
- 計算
n = p * q
- 根據歐拉函數
φ(n) = (p - 1) * (q - 1)
計算出φ(n)
- 肯定公鑰(整數)
e
,要求:1 < e < φ(n)
且e
和φ(n)
互質 - 肯定私鑰(整數)
d
,要求:(e * d) / φ(n)
的餘數爲1
- 加密:原文
m
,計算m
的e
次冪除以n
,求餘數c
,c
就是加密後所得的密文 - 解密:密文
c
,計算c
的d
次冪除以n
,求餘數獲得原文m
示例(來自 wikipedia)
p = 61
,q = 53
n = 61 * 53 = 3233
φ(n) = (61 - 1) * (53 - 1) = 60 * 52 = 3120
e = 17
d = 2753
- 公鑰
(3233,17)
,私鑰(3233,2753)
- 原文
18
,公鑰加密密文2100
,私鑰解密獲得原文18
- 原文
81
,私鑰加密密文2083
,公鑰解密獲得原文81
安全性
- 加解須要
n
和公鑰e
生成密文c
- 解密須要
n
、密鑰d
和密文c
- 公開場合竊聽者只能獲取
n
e
c
,可是獲取不到密鑰d
,須要經過e
計算出d
- 若是想經過
e
計算出d
則必須知道φ(n)
- 想知道
φ(n)
必須求出p
和q
- 由於
n = p * q
而n
已知,因此必須進行【質因數分解】,數學證實大數質因數分解十分困難,這也是 RSA 算法安全性的根本保證