目录

数据校验


数据校验

  • 封包一对一匹配,一个发送封包对应一个返回封包,防止中途篡改数据,同时避免服务器被本地化。
  • 所以,获得返回密文与明文后,需要将某些参数与发送明文进行校验。

校验步骤

数据校验在通信过程中尤为重要,这将决定获取的数据是否合法,保证每一条命令都是由服务端发出且中途没有经过篡改,由于解包过程已经经过一次sign校验,此次不在举例范围。

1. 校验封包安全码(UUID)

  • 校验返回的UUID是否与提交的UUID相同,相当于”安全码”,一包一码,原样返回。

  • 例:如果提交的UUID为:3825a2cc-9a4f-4175-9589-c6fd0af5fb0a

  • 那么返回的UUID也为: 3825a2cc-9a4f-4175-9589-c6fd0af5fb0a

2. 校验token值

  • 拼接提交封包中的m1和返回封包中t,拼接后取MD5值,此值应等于返回封包中的token的值。

  • 例:提交封包中的m1为:f221b91f6ed219f3b703e1cba16b1ed0,返回封包中的t为:1581789258

  • 那么取MD5值(“f221b91f6ed219f3b703e1cba16b1ed01581789258)=返回封包中token的值。

3. 校验数据主体token值

  • 将返回数据中的result,以键名ASCII递增牌序(默认返回已经排好序),将键名与键值拼接。

  • 拼接完毕后再将key(通讯秘钥)拼接到末尾取MD5值,此值应等于返回封包中的result_token的值。

  • 例:设key为:f221b91f6ed219f3b703e1cba16b1ed0,返回封包中result为:{"b":"2","c":"3","a":"1"}

  • 以键名ASKII递增牌序为:{"a":"1","b":"2","c":"3"}

  • 取其键名+键值:a1b2c3再将key拼接到最后为:a1b2c3f221b91f6ed219f3b703e1cba16b1ed0

  • 那么:取MD5值(“a1b2c3f221b91f6ed219f3b703e1cba16b1ed0”)=返回封包中result_token的值.