文章目录
- 为什么要对数据传输加密
- 对称加密和非对称加密
- 密钥的几种格式
- 非对称加密算法----RSA算法
- 产生公私密钥对
- 对称加解密算法AES
- 为什么要结合使用这两种算法
- 利用RSA来加密传输AES的密钥,用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