App实现可靠性数据传输

来源:互联网 发布:淘宝看店宝收费吗 编辑:程序博客网 时间:2024/05/17 01:28
App和server需要大量的数据交互,为了防止竞争对手通过抓包方式获得自己的数据,可以采用对称加密技术和非对称加密技术结合的方式对自己的数据进行可靠性传输。本文采用AES ECB 128位方式举例,具体的大家可以自行选择。一、上行(App发送数据给Server)假如我们需要将用户的手机号,密码发给Server端。数据telephone=185000000000,pwd=1234561.先将数据序列化(json化){"telephone" : "185000000000","pwd" : "123456","deviceid" : "238479384723498","time" : "1446517059"}注:时间戳和设备id(每个设备唯一)都是为了防止请求重现加入的,可以在请求的基类里加入2.数据加密及签名生成将第一步的json进行AES加密并进行base64,本文在海姹网在线AES得到密钥为12345678,删掉所有换行和非数据的空格如({"telephone":"185000000000","pwd":"123456","deviceid":"238479384723498","time":"1446517059"})Y7bSUw3mjUxaOU126RaQJqNv1UPKeLf0l1lMVQJ359IgbQuHTqTUAUrhtqApiH7zZu3KJahbTcyYDLFyzGsFSC6XC7CqeuZNKIi0T+U7tR3Mqw5ndJHT/X9O+aBT7sAoqgEbt9+kC2EN9dhceYXgXM6H+brLYZwbBqw/NrEQjfLTzOc1GX9kOUCXbaupWSz1JDdRTQ272i2X7GqC0jJWLD/xRUveqfOdD1sMmdhgsJc=对json数据做md5得到6c220955e6a567a0b944cac843ca8e8e3.组合传输数据将加密的数据和签名json化
{"sign" : "6c220955e6a567a0b944cac843ca8e8e","data":"Y7bSUw3mjUxaOU126RaQJqNv1UPKeLf0l1lMVQJ359IgbQuHTqTUAUrhtqApiH7zZu3KJahbTcyYDLFyzGsFSC6XC7CqeuZNKIi0T+U7tR3Mqw5ndJHT/X9O+aBT7sAoqgEbt9+kC2EN9dhceYXgXM6H+brLYZwbBqw/NrEQjfLTzOc1GX9kOUCXbaupWSz1JDdRTQ272i2X7GqC0jJWLD/xRUveqfOdD1sMmdhgsJc="
}
4.Server端处理
收到App的请求数据后,Server先将data字段AES解密,得到有效数据的JSON,再进行相同规则的签名计算,需要主要json数据的顺序,必须保持一致,再和App发过来的sign进行比对,如果一致则判读为有效请求,将当前的sign存到redis里,设置一个月内不得再出现,防止请求重现。
二、下行(Server发送数据给App)
可以仿造上行的2,3两步,但是不需要deviceid.

更多内容请关注我的博客
0 0
原创粉丝点击