维基百科这样说:RSA加密算法
算法原理
- RSA 是非对称算法,加解密使用不同的密钥。
- RSA 算法的可靠性基础:对极大整数做因数分解是很困难的(NP问题)。
- (n, e) 是公钥,(n, d) 是私钥,公钥发送给所有通信对象,私钥则必须保管好,防止泄露。
- 若使RSA安全,p 与 q 必为足够大的素数,使破解者没办法在多项式时间内将 n 分解。
实现步骤
- 现在Bob想要发送一封密信给Alice,他需要这样做:
- 寻找两个大素数 p 和 q
- 计算 n = p * q 和 𝝋(n) = (p-1) * (q-1)
- 选择一个随机数 e(0 < e < 𝝋(n)),满足 e 与 𝝋(n) 互质
- 使用辗转相除法计算 e 关于 𝝋(n) 的模反元素 d,记为 d = e^{-1} (mod 𝝋(n))
- 在目录中公开 n 和 e 作为公钥,并销毁 p 和 q
- 将明文划分成块,使每个明文报文 P 的长度 m 满足:0 < m < n
- 依次加密 P 得到密文:C = P^e (mod n)
- 向Alice发送密文 C 和公钥 (e, n)
- Alice收到密文后,这样解密:用私钥 (d, n)解密得到明文 P=C^d (mod n)