周末,外面天太热了,我正在睡觉。
然后,电话响了,原来TBox的相关人员仔细分析了日志,找出了TBox所谓的发空数据的问题。实际情况是什么呢?
好,我们先从TBox与APP在最开始鉴权的时候说起吧。
鉴权的过程如下:
1.APP->TBox:请求TBox公钥
2.TBox->APP:返回TBox公钥
3.APP->TBox:发送APP公钥
4.TBox->APP:发送加密的对称性算法密钥,APP侧用此前得到的TBox公钥解密(注意此处)
5.TBox->APP:发送车辆数据,APP侧用第四步得到的密钥解密(注意此处),以后都用此密钥解密。
那TBox发送的空数据是什么原因呢?
原来,从日志中仔细分析,上面的步骤中,APP向TBox发送请求,如1,3步都发送了两次。发送两次的原因以后再谈,先谈空数据怎么来的。
当第3步中,APP发送第一次时,APP会用TBox公钥进行解密,得到对称性算法密钥。
而APP发送第二次时,APP就用对称性算法密钥解密,而此时TBox的数据还是用公钥加的密,解密就出错了,得到的是空数据包。
分析原因,这个空数据包是因为APP发送了两次请求,导致TBox返回两次数据,而双方加密与解密用的算法不同,导致出现了空数据包。
实际上,TBox发送过来的数据是正确的。
那么,APP为什么会发送两次请求呢?