基本概念
RSA中密钥是成对的:公钥,私钥
公钥 - 对外公开的密钥
私钥 - 个人持有的密钥
设A为明文,B为密文,pk为公钥,sk为私钥,则RSA算法存在以下等式:
A = RSA(B,pk)
B = RSA(A, sk)
即:使用一个密钥加密得到的密文,可以用另一个密钥解密出来得到明文。
公钥 - 对外公开的密钥
私钥 - 个人持有的密钥
设A为明文,B为密文,pk为公钥,sk为私钥,则RSA算法存在以下等式:
A = RSA(B,pk)
B = RSA(A, sk)
即:使用一个密钥加密得到的密文,可以用另一个密钥解密出来得到明文。
所以下面的等式也能成立:
A = RSA(B, sk)
B = RSA(A, pk)
被公开的就是公钥,不公开的就是私钥。
需要明确:
RSA加密 - RSA解密 这一过程需要两个密钥都参与,只有 一个密钥是不能完成整个加密-解密工作的。
HTTPS是RSA的一个典型应用。
一种基于RSA和3DES的安全通信的方法
1. A与B希望进行安全通信
2. A持有私钥sk,对外公开公钥pk
3. B随机生成一个3DES密码X
4. B将X使用公钥pk加密后得到密文Y
5. B将密文Y发送给A (悄悄告诉A:咱们用密码X进行通信吧)
6. A使用私钥sk解密Y,得到3DES密码X
7. A与B开始进行通信,通信内容使用密码X进行3DES加密
2. A持有私钥sk,对外公开公钥pk
3. B随机生成一个3DES密码X
4. B将X使用公钥pk加密后得到密文Y
5. B将密文Y发送给A (悄悄告诉A:咱们用密码X进行通信吧)
6. A使用私钥sk解密Y,得到3DES密码X
7. A与B开始进行通信,通信内容使用密码X进行3DES加密
为什么还需要3DES这样的对称加密算法
因为RSA的加密解密复杂度很高,会导致数据传输效率大幅度降低,
但3DES这样的对称加密算法则不然,甚至能使用硬件的电路实现3DES算法。
所以为了速度,多数情况下选择用RSA交换对称算法的密码,用3DES这样的对称算法进行实际的数据加解密。