RSA 和 AES 加密 结合的使用
写在前面
在正常的信息交互过程中,经常会使用到对信息的加密的处理,所以今天在这里记录一种经常使用的加密方式的结合
对称加密(AES代表)
:是加密和解密使用同一个秘钥
非对称加密(RSA代表)
:秘钥有公钥和私钥,如果使用公钥对数据进行加密那只有对应的私钥可以解密,如果使用私钥进行加密,那只有使用对应的公钥进行解密
之前已经分别记录过这两种加密方式,现在在这里记录一下实际情况下两种方式结合的情况,也是最常用的方式,一遍以后查阅
RSA 非对称加密的代表 AES 对称加密方式的代表
使用场景及准备
- 举例来说如果在登录的时候需要向后端传递用户的电话号码和身份证号码,对于这中信息就需要进行加密处理
- 准备 ,前后端分别生成RSA的公钥和私钥,交换公钥
使用
客户端加密过程主要是以下步骤:
- 客户端随机生成AES秘钥
- 对重要的信息进行AES加密得到密文
- 在通过服务端的传递过来的公钥pub2对AES秘钥进行加密
这样的话就算AES秘钥被别人截取也是没有关系的,没有对应的RSA解密是取不到AES秘钥的
服务端解密的过程步骤:
- 使用服务端自己的RSA秘钥对加密的AES密文解密得到AES秘钥
- 在使用AES秘钥对拿到的密文进行解密拿到传递过来的原始信息
推荐
在实际情况中也会有服务端向客户端传递的数据也是需要加密的,以上我们使用的方式也是满足的,因为客户端已经把AES的秘钥使用加密的方式传递给了服务端了,这个秘钥现在是只有客户端和服务端知道的,所以两端如果需要数据的加密传输的话就可以直接适应AES秘钥进行加密
不推荐
还有一种方式是:客户端和服务已经交换了自己的RSA公钥,这样如果哪一方向向另一方传递数据的话就可以使用自己的RSA秘钥加密数据,对方在使用事前交换的公钥进行解密,但是这种方式不是很推荐,因为RSA的解密耗时约等于AES解密的100倍,如果所有的加密数据的传输都是用RSA是的话是很影响性能的
.
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。