设备校验
硬件与手机连接后,需要向手机发校验内容。校验通过后才可正常使用 校验方式有两种:
- 密钥组:自定义一组秘钥进行校验。开发更简单,更适合一些低成本蓝牙设备。其中密码组长度越高安全性越高
- 内容校验:自定义内容,使用AES加密进行校验。内容随机,且每个设备不一样,安全性高。但是需要设备使用AES算法,且回复内容较长
秘钥组
相关概念
更换周期:按周期遍历密钥组里的秘钥
如,秘钥组里有12组秘钥,更换周期设置成一月。则设置之日起,第一个自然月使用第一组秘钥,下个月1号则会使用下一组,如此循环
秘钥组校验流程
- 在小机云网页的项目详情里设置秘钥组
- 把所有秘钥存进设备里
- 设备在连接时,APP会向服务器取出当前的秘钥(按周期变换),向设备秘钥发送前8位。
- 设备收到后,与预存的秘钥进行匹配
- 如果匹配到相应的秘钥,则回应此组秘钥里的第8位后的任意连续8位给APP 秘钥要求:
- 秘钥只支持数字和英文字母,区分大小写
- 密钥组长度尽量要长,建议12组或24组或更多,每组秘钥尽可能长,前8位不可以重复。单组秘钥至少需要16位。
查询密码和校验指令,请查看蓝牙文本协议
秘钥组校验案例
假设已经在小机云网页端,项目详情里设置了3组秘钥,更换周期为一个星期
并已经在设备里存入了所有的秘钥
36e8d6fef2ba155d922050a0c0b3c1a6
63bd1c2b5c0119eb57e60da60b1ee131
e097bf3879e3b945e7d0fe17715d7b29
则在设备使用指令查询秘钥,APP会下发第一组的前8位,36e8d6fe。设备拿到了该秘钥头后,与预存秘钥进行匹配,匹配到第一组,则设备发第一组的8位后面的任意8位到APP,如,55d92205。
校验成功,APP会返回:$XA#S#OK&6A
更多建议
- 建议设备存入比在网页上预设的更多秘钥,如100组。网页上只使用其中任意12组,且可以定期手动在网页更换这100组里的任意12组
- 密钥组长度尽量要长,建议12组或24组或更多,每组秘钥尽可能长,前8位不可以重复。单组秘钥至少需要16位。
内容校验
设备需要用指定的内容,按规定的格式,组合成校验内容。把校验内容加密后送给APP记得校验
设置内容校验格式
- 进入小机云网页端并登录。登录后,点击项目卡片更多查看项目详情
- 点击查看项目秘钥(ProjectSecrete)
设备发送内容校验
硬件向手机发送的校验内容的格式需要与校验内容格式一致
检验内容使用”.“进行分段,可使用的字段如下,字段顺序可随意调整。
校验内容需要与ProjectSecret进行AES/ECB/PKCS7 256加密后发送到手机。
MAC:必要,MAC地址
timestamp:必要,须为5分钟内的13位UTC时间戳
myContent:必要,该字段可以自定义内容,如改为9sdj93a,只允许字母与数字
projectId:可选
deviceId:可选
发送校验的指令,请查看蓝牙文本协议
AES计算工具
小机云调试工具
您可以使用小机云调试工具计算蓝牙校验内容 小机云调试工具
在线计算
使用示例
设备与项目各项属性为:
projectId:1032n8e32sa9v2bdf3
deviceId:d83js021x91
mac:11:22:33:44:55:66(需要与创建设备时输入的MAC一致)
myContent:自定义内容为
ProjectSecret:B407CEA9A9DA7B9A088F81D42E217444
内容格式1:projectId.mac.key123.timestamp(自定义内容key123)
得到的校验内容为:1032n8e32sa9v2bdf3.11:22:33:44:55:66.key123.1726830773258
加密后的内容为:F04C39B790DCB413FA360FD786E71542912CB413A0658E28E2BDE8B6F77B5FD1C1BEF763B4E9DE0CC4A6C3F07C9D4E1A0926F9224383B6B9FE1B9360B804C006
内容格式2:mac.timestamp.deviceId.d73a9s1(自定义内容d73a9s1)
得到的校验内容为:11:22:33:44:55:66.1726830773258.d83js021x91.d73a9s1
加密后的内容为:62E45220EAB1AECFDA095517492B08DD2613248A39EC1B664272D35727F1083EB3DE48E7A40B39E896776190653D9E044C4651F7B2A02987EBFABE87C45A5617
在小机云调试工具里使用
在小机云调试工具中找到:蓝牙-->设备指令-->发送校验内容指令-->编辑。如下图
使用上面的”内容格式1“,则需要在小机云调试工具中填入
ProjectSecret:B407CEA9A9DA7B9A088F81D42E217444
内容1:1032n8e32sa9v2bdf3
内容2:11:22:33:44:55:66
内容3:key123
内容4:timestamp
点击确定。
设备与小机云蓝牙APP连接成功后(打开APP,手机保持亮屏),点击“发送校验内容”指令可以发送校验内容。如果成功会收到回复
$XGC_ACK#CHECK_KEYCONTENT#0#OKe#
使用上面的”内容格式2“,则需要在小机云调试工具中填入
ProjectSecret:B407CEA9A9DA7B9A088F81D42E217444
内容1:11:22:33:44:55:66
内容2:timestamp
内容3:d83js021x91
内容4:d73a9s1