移动端加密解密方案探索

1、RSA——非对称加密,会产生公钥和私钥,公钥在客户端,私钥在服务端。公钥用于加密,私钥用于解密。
2、AES——对称加密,直接使用给定的秘钥加密,使用给定的秘钥解密。(加密解密使用相同的秘钥)。
3、MD5——一种单向的加密方式,只能加密,不能解密。
4、Base64编码——对字节数组转换成字符串的一种编码方式。

客户端,服务端的通信逻辑

之前:明文传输通信

客户端将要上传的数据以字典(Map)的方式打包,Post提交给服务器。
服务器接收提交的数据包,通过Key-Value的形式获取客户端提交的值,进行处理。
处理结束,将数据以字典(Map)的形式打包,返回给客户端处理。

加密传输通信
整个流程是:
客户端上传数据加密 ==> 服务器获取数据解密 ==> 服务器返回数据加密 ==> 客户端获取数据解密

客户端上传数据加密 A

客户端随机产生一个16位的字符串,用以之后AES加密的秘钥,AESKey。
使用RSA对AESKey进行公钥加密,RSAKey
(此处某些重要的接口需要加签处理,后续讲解,不要加签处理的省略该步骤)
将明文的要上传的数据包(字典/Map)转为Json字符串,使用AESKey加密,得到JsonAESEncryptedData。
封装为{key : RSAKey, value : JsonAESEncryptedData}的字典上传服务器,服务器只需要通过key和value,然后解析,获取数据即可。

服务器获取数据解密 B

获取到RSAKey后用服务器私钥解密,获取到AESKey
获取到JsonAESEncriptedData,使用AESKey解密,得到明文的客户端上传上来的数据。
(如果客户端进行了加签处理,此处需要验签,以保证数据在网络传输过程中是否被篡改)

服务器返回数据加密 C

将要返回给客户端的数据(字典/Map)转成Json字符串,用AESKey加密处理
(此处也可以加签处理)
封装数据{data : value}的形式返回给客户端

客户端获取数据解密 D

客户端获取到数据后通过key为data得到服务器返回的已经加密的数据AESEncryptedResponseData
对AESEncryptedResponseData使用AESKey进行解密,得到明文服务器返回的数据。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值