RSA和AES的使用

为什么要对数据传输加密

在开发应用过程中,客户端与服务端经常需要进行数据传输,涉及到重要隐私信息时,为了避免数据泄露和被篡改,开发者自然会想到对数据进行加密,即使传输过程中被“有心人”截取,也不会将信息泄露。

对称加密和非对称加密
密钥的几种格式

1 .DER:是用二进制DER编码

.PEM:是用ASCLL(BASE64)编码

PEM格式就是在DER格式基础上进行BASE64编码

2 .CER:存放公钥,没有私钥

.PFX:存放公钥和私钥

非对称加密算法----RSA算法

在这里插入图片描述

1. 非对称加密算法需要两个密钥:公开密钥(publickey)和私有密钥(privatekey)。
2. 所谓非对称,就是指该算法需要一对密钥,使用其中一个加密,则需要用另一个才能解密。
   简单的说是“公钥加密,私钥解密;私钥加密,公钥解密”。
3.RSA算法支持加密、解密、签名、验签操作。

RSA算法操作与密钥类型关系如下:
在这里插入图片描述

产生公私密钥对

openssl genrsa -out test_priv.pem 2048 //test_pri.pem中既包含了私钥信息也包含了公钥信息
openssl rsa -pubout -in test_priv.pem -out test_pub.pem //从test_pri.pem私钥中提取公钥命令

对称加解密算法AES
密码学中的高级加密标准(Advanced Encryption Standard,AES),又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准。
1. 使用时需要利用AES密钥和初始化向量IV来加解密数据。
2. 解密操作时必须使用相同的AES密钥和IV值,否则解密出来的数据是不正确的
为什么要结合使用这两种算法
1. rsa对秘钥加密是为了防止数据被篡改,而使用AES进行加解密是因为RSA太慢了,所以使用AES进行通信,RSA进行传递秘钥。
2. 数据量不大时直接用RSA就可以
利用RSA来加密传输AES的密钥,用AES来加密数据,思路如下:

1、客户端启动,发送请求到服务端,服务端用RSA算法生成一对公钥和私钥,我们简称为pubkey1,prikey1,将公钥pubkey1返回客户端。

2、客户端拿到服务端返回的公钥pubkey1后,自己用RSA算法生成一对公钥和私钥,我们简称为pubkey2,prikey2,并将公钥pubkey2利用服务端传过来的公钥pubkey1加密,加密后,传输给服务端。

3、此时服务端收到客户端传输的密文,用私钥prikey1进行解密,因为数据pubkey2是用服务端的公钥pubkey2加密的,那么,通过解密就可以得到客户端生成的公钥pubkey2

4、然后服务端自己再生成 对称密钥key,取名为aeskey,也就是我们的AES,其实也就是相对于我们配置中的长度为16没加密key,生成了这个key以后,我们就用客户端的公钥pubkey2进行加密,返回给客户端。因为被pubkey2加密的数据,只能被客户端对应的prikey2解密,所以,客户端拿到密文后,用prikey2进行解密操作,解密完,得到对称加密AES的密钥key,最后密钥key进行数据传输加密,至此,整个流程结束。

特点分析:

1、单纯的使用非对称加密方式RSA的话,效率会很低,因为非对称加密解密方式虽然很保险,但是过程复杂,需要时间长。

2、单纯使用对称加密方式AES的话,太死板,因为这种方式使用的密钥是一个固定的密钥,也就是不能改,一旦客户端或者服务端改的话,就必须通知另一方要改,并且改了后,还需要约定一相同的密钥。使用起来非常不灵活。并且,有一种极端的情况就是,一旦密钥被人获取,那么,我们是无法知道的,我们的所发的每一条数据都会被都对方获取。

but,AES有个很大的优点,那就是加密解密效率很高,而我们传输正文数据时,正号需要这种加解密效率高的;所以这种方式适合用于传输量大的数据内容。

3、基于以上两种特点,所以取其优,就是结合使用;用RSA方式传输AES的密钥,然后客户端和服务端拿到AES的密钥后,再进行传输正式的内容。这样既利用了RSA的灵活性,可以随时改动AES的密钥;又利用了AES的高效性,可以高效传输数据。

参考链接

https://blog.csdn.net/qingzhuyuxian/article/details/119731687
https://blog.csdn.net/mm_520111111/article/details/120379377
*https://www.cnblogs.com/f1194361820/p/4260025.html
http://t.zoukankan.com/jianguo221-p-13030046.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

多维不语

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值