RSA加密算法

维基百科这样说:RSA加密算法

算法原理

  1. RSA 是非对称算法,加解密使用不同的密钥。
  2. RSA 算法的可靠性基础:对极大整数做因数分解是很困难的(NP问题)。
  3. (n, e) 是公钥,(n, d) 是私钥,公钥发送给所有通信对象,私钥则必须保管好,防止泄露。
  4. 若使RSA安全,pq 必为足够大的素数,使破解者没办法在多项式时间内将 n 分解。

实现步骤

  • 现在Bob想要发送一封密信给Alice,他需要这样做:
  1. 寻找两个大素数 pq
  2. 计算 n = p * q𝝋(n) = (p-1) * (q-1)
  3. 选择一个随机数 e(0 < e < 𝝋(n)),满足 e 与 𝝋(n) 互质
  4. 使用辗转相除法计算 e 关于 𝝋(n) 的模反元素 d,记为 d = e^{-1} (mod 𝝋(n))
  5. 在目录中公开 ne 作为公钥,并销毁 pq
  6. 将明文划分成块,使每个明文报文 P 的长度 m 满足:0 < m < n
  7. 依次加密 P 得到密文:C = P^e (mod n)
  8. Alice发送密文 C 和公钥 (e, n)
  • Alice收到密文后,这样解密:用私钥 (d, n)解密得到明文 P=C^d (mod n)