AOSP SDK 报文数据加解密规则

来源:互联网 发布:适合mac用的办公软件 编辑:程序博客网 时间:2024/05/21 09:23

SDK中主功能类图设计

这里写图片描述
AospClient是供客户端直接调用的接口类。通过该类的方法可以实现对AOSP的服务访问。
AospResponse和AospRequest分别是请求的实体类和应答的实体类。
HttpPostUtils是构建请求的类,其中的静态方法实现了对请求参数的封装加密封以及请求的发送。该类是最主要的类。(该类中处理的东西有点多,几乎所有的逻辑都在这儿实现
他们的关系如图所示。还有其他的一些类没有列出都是对他们的支持。


SDK数据加密

这里写图片描述

整个数据加密,就是将上图中左侧的数据经过一些算法得到右侧的HttpPost类,其实最终过程是为发送一个符合规则的HTTP报文,这里报文中的数据用HttpPost来封装。

规则:(AospRequest简称AR,AospClient简称AC)

1、AospRequest.md5生成
将A中的dataJOSN化,再用MD5加密得到String:md5,再将md5赋值给A.md5。
2、A加密
将A对象JOSN化(list除外),得到content。再用AEC算法将(以AC.secret为参数)对content加密,得到密文contentCipher。
3、签名sign
String sign = 对content进行MD5加密运算。


组装HttpPost

HEAD部分:
“parternerKey”:AC.partnerKey
“sign” : sign
请求长度(附件):XXX
请求长度(主体):XXX

ENTITY部分:
xxx:contentCipher(加密后的主体数据)

附件内容实现略。


AOSP报文解析

AOSP对请求的报文的验证和解析都在拦截器中实现。
1、获取请求HEAD中的,请求时间,接入者身份,请求长度,签名等等
2、校验请求时间(当前时间与报文中的请求时间做比较)
3、校验接入者KEY(查看数据库中是否有该合作伙伴的KEY)
4、校验报文主体(验证报文的合法性)
4.1、content = 解密contentCipher
4.2、校验content长度(是否为空,长度是否和报文头中的数据一致)
4.3、校验签名sign
5、解析content中数据,封装成 AospServerRequest对象,该对象为包含了AOSP系统定义的业务数据字段。

0 0
原创粉丝点击