RSA属于非对称加密算法,它虽然解决了“在不安全的信道上安全地传递密钥”这一问题,但缺点在于运算量太大,造成加/解速度太慢,所以在具体的工程应用上是混合使用了对称和和非对称加密算法,比如SSL/TLS协议是混合使用了RSA和AES算法。具体的过程是,用RSA算法加密对称密码再传递给对方,然后双方使用对称加密算法通信;另外,RSA还起到CA认证的作用(其实就是验证由CA的私钥签名的,对方的公钥)。
由此可见,RSA的作用已经由“加密数据”减弱为“验证CA证书”和“共享对称密钥”,如果第二个作用由DH算法代替,那么,RSA就仅用于验证CA证书了。
为了理解用RSA共享对称密钥的过程,本文用手动的方法来逐步实现。
A用户要把数据加密传输给B用户,步骤如下:
1、B生成公钥/私钥对,并把其中的公钥导出,通过公开信道传递给A;
2、A生成对称密码;
3、A用对称加密算法对文件进行AES加密;
4、A用B的公钥加密对称密码(形成数字信封);
5、A将数字信封和密文通过网络等渠道传送B;
6、B用自己的私钥解密对称密码;
7、B用解密后的对称密码解密密文;
具体的操作步骤:
1、B生成RSA密钥对文件key.pri,然后从中提取公钥key.pub并通过公开信道传递给A: