数据校验在通信过程中尤为重要,这将决定获取的数据是否合法,保证每一条命令都是由服务端发出且中途没有经过篡改,由于解包过程已经经过一次sign校验,此次不在举例范围。
校验返回的UUID是否与提交的UUID相同,相当于”安全码”,一包一码,原样返回。
例:如果提交的UUID为:3825a2cc-9a4f-4175-9589-c6fd0af5fb0a
那么返回的UUID也为: 3825a2cc-9a4f-4175-9589-c6fd0af5fb0a
拼接提交封包中的m1和返回封包中t,拼接后取MD5值,此值应等于返回封包中的token的值。
例:提交封包中的m1为:f221b91f6ed219f3b703e1cba16b1ed0
,返回封包中的t为:1581789258
,
那么取MD5值(“f221b91f6ed219f3b703e1cba16b1ed01581789258)=返回封包中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的值.