手动演示RSA和AES混合加密过程-创新互联

     RSA属于非对称加密算法,它虽然解决了“在不安全的信道上安全地传递密钥”这一问题,但缺点在于运算量太大,造成加/解速度太慢,所以在具体的工程应用上是混合使用了对称和和非对称加密算法,比如SSL/TLS协议是混合使用了RSA和AES算法。具体的过程是,用RSA算法加密对称密码再传递给对方,然后双方使用对称加密算法通信;另外,RSA还起到CA认证的作用(其实就是验证由CA的私钥签名的,对方的公钥)。

江海ssl适用于网站、小程序/APP、API接口等需要进行数据传输应用场景,ssl证书未来市场广阔!成为创新互联的ssl证书销售渠道,可以享受市场价格4-6折优惠!如果有意向欢迎电话联系或者加微信:028-86922220(备注:SSL证书合作)期待与您的合作!

     由此可见,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:

         手动演示RSA和AES混合加密过程

   openssl genrsa -out key.pri 4096    openssl rsa -in key.pri -pubout -out key.pub

   2、A生成32字节的随机密码文件passwd.bin:

              手动演示RSA和AES混合加密过程

   openssl rand -out passwd.bin 32

3、准备待加密文件test.txt,用上面的随机密码,以AES算法加密明文test.txt,输出的密文是test.enc,key派生函数是pbkdf2:

         手动演示RSA和AES混合加密过程

   openssl enc -pbkdf2 -aes-256-cbc -in test.txt -out test.enc -pass file:passwd.bin    del test.txt

   4、A用B发过来的公钥key.pub加密随机密码文件passwd.bin,形成数字信封passwd.enc:

          手动演示RSA和AES混合加密过程

   openssl rsautl -encrypt -in passwd.bin -inkey key.pub -pubin -out passwd.enc    del passwd.bin

5、A通过公开信道,将密文test.enc和passwd.enc发送给B:

             手动演示RSA和AES混合加密过程

  6、B首先用自己的私钥解密数字信封,得到对称密码文件passwd.bin:

         手动演示RSA和AES混合加密过程

   openssl rsautl -decrypt -in passwd.enc -out passwd.bin -inkey key.pri

    7、B再用对称密码解密消息,得到明文test.txt,算法和秘钥派生函数与加密时用到的参数一样:

         手动演示RSA和AES混合加密过程

          openssl enc -d -aes-256-cbc -pbkdf2 -in test.enc -out test.txt -pass file:passwd.bin

非对称加密工具可以使用可以使用gpg4win

另外有需要云服务器可以了解下创新互联cdcxhl.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


网页名称:手动演示RSA和AES混合加密过程-创新互联
转载注明:http://ybzwz.com/article/dopsdd.html