1、RSA 算法概述
RSA 公开密钥密码体制。所谓的公开密钥密码体制就是使用不同的加密密
钥与解密密钥,是一种“由已知加密密钥推导出解密密钥在计算上是不可行的”
密码体制。
RSA 的安全性依赖于大数分解,但是否等同于大数分解一直未能得到理论
上的证明,因为没有证明破解 RSA 就一定需要作大数分解。假设存在一种无须
分解大数的算法,那它肯定可以修改成为大数分解算法。 RSA 的一些变种算
法已被证明等价于大数分解。不管怎样,分解 n 是最显然的攻击方法。人们已
能分解多个十进制位的大素数。因此,模数 n 必须选大一些,因具体适用情况
而定。
2、RSA 原理
假设有消息发送方 A 和消息接收方 B,通过下面的几个步骤,就可以完成
消息的加密传递:
消息发送方 A 在本地构建密钥对,公钥和私钥;
消息发送方 A 将产生的公钥发送给消息接收方 B;
B 向 A 发送数据时,通过公钥进行加密,A 接收到数据后通过私钥进行解
密,完成一次通信;反之,A 向 B 发送数据时,通过私钥对数据进行加密,B
接收到数据后通过公钥进行解密。由于公钥是消息发送方 A 暴露给消息接收方
B 的,所以这种方式也存在一定的安全隐患,如果公钥在数据传输过程中泄
漏,则 A 通过私钥加密的数据就可能被解密。
如果要建立更安全的加密消息传递模型,需要消息发送方和消息接收方各构建
一套密钥对,并分别将各自的公钥暴露给对方,在进行消息传递时,A 通过 B
的公钥对数据加密,B 接收到消息通过 B 的私钥进行解密,反之,B 通过 A 的
公钥进行加密,A 接收到消息后通过 A 的私钥进行解密。
3、RSA 算法实现
找两素数 p 和 q
取 n=p*q