RSA算法是一种非对称加密算法,由三位数学家Rivest、Shamir和Adleman于1977年提出。RSA算法的安全性基于大整数分解的困难性,即将一个大整数分解为两个质数的乘积的困难性。
由于RSA算法的安全性依赖于大整数分解的困难性,目前没有有效的算法可以在合理的时间内分解大整数。因此,RSA算法被广泛应用于信息安全领域,包括加密通信、数字签名等方面。
RSA算法的过程如下:
- 选择两个大质数p和q,并计算它们的乘积n=p*q。
- 计算欧拉函数φ(n)=(p-1)*(q-1)。
- 选择一个小于φ(n)且与φ(n)互质的整数e,作为公钥的指数。
- 计算e的模反元素d,即满足(e*d) mod φ(n) = 1的整数d,作为私钥的指数。
- 公钥是(n, e),私钥是(n, d)。
- 加密时,将明文m用公钥加密成密文c,计算公式为c = m^e mod n。
- 解密时,将密文c用私钥解密成明文m,计算公式为m = c^d mod n。