腾讯云三元组生成方法(简述)

写在最前

昨天一位博友@makunIT同学,跟我聊了下腾讯云物联网通信三元组的生成方法,今天白天出差,一直没时间回答,早上草草的发了B站超威电子老师的视频,直到晚上才坐下来,说道这,真羡慕makunIT同学在学校就能接触这么实用的技术。
不过有点不好意思, 我没有在Linux下使用与你相同的工具操作, 因为, 我不会Linux, 哈哈, 惭愧!

三元组的生成过程

  1. 先从腾讯云平台生成设备秘钥,最重要的两条内容是 设备秘钥 和client id两个参数,另外mqtt username和mqtt password参数, 通过物联网设备在登录时生成,下面主要就是介绍这两条参数的生成方法。腾讯官方也有很详细的教程。
    在这里插入图片描述
  2. 生成一个5位的随机数备用, C语言可以通过srand()函数以时间为种子生成,我用python举例子, 因为pyton比C语言用着方便, 仅仅是出于举例子的角度考虑。 我生成的随机为:

connid = RandomConnid(5)
connid = ERG02

  1. 生成过期时间, 从纪元1970年1月1日 00:00:00 UTC 时间至今秒数的 UTF8 字符串,注意!!!获取到当前秒数的同时,还要加上一个时间,比如60*60秒,如果你使用单片机没有时钟, 就设置一个远一点的时间。

expiry = int(time.time()) + 60 * 60
我此时获取到的时间为: expiry = 1595338063

  1. 生成MQTT的client id部分, 格式为 p r o d u c t i d {productid} productid{devicename}, 腾讯已经直接生成了client id, 它是由产品ID和设备名称连接组成的。

HRDQBHLDHSTaxiLed_Dev_002

在这里插入图片描述在这里插入图片描述

  1. 生成mqtt的username部分, 格式为 c l i e n t i d ; {clientid}; clientid;{sdkappid}; c o n n i d ; {connid}; connid;{expiry}

username = “{};12010126;{};{}”.format(clientid, connid, expiry)
使用前几步准备好的 随机数,client id, 过期时间得到如下username:
HRDQBHLDHSTaxiLed_Dev_002;12010126;ERG02;1595338063

  1. 解码秘钥, 使用第一步腾讯云生成的秘钥的base64编码的秘钥进行解码, 当然, 这个秘钥你可以随时修改

我的设备秘钥为: dGlnZXJvdHMwMTIzNDU2Nzg5
base64解码后的raw_key: tigerots0123456789

我使用在线加密解码网解码, 如下图所示:
在这里插入图片描述

  1. 对username进行签名,生成token,比如使用SHA256加密, 同样使用刚才的网址.

需要加密的内容为username:HRDQBHLDHSTaxiLed_Dev_002;12010126;ERG02;1595338063,
秘钥为raw_key: tigerots0123456789
加密后的内容为: 8131bdd854da957e6d99b8a6af3ca0baa04346889d83638e96ec9ff4071932e7

在这里插入图片描述

  1. 最后一步, 生成password, 这一步非常简单, 就是将上一步生成的加密结果附加上加密方式

password = “{};{}”.format(token, “hmacsha256”)
最终的mqtt password为:8131bdd854da957e6d99b8a6af3ca0baa04346889d83638e96ec9ff4071932e7;hmacsha256

经过以上步骤, 三元组 “clientid”, “username”, “password” 就全部得到了, 使用他们登录吧, 设备以及在线了

在这里插入图片描述尝试下收发主题消息, 注意日志里面是base64编码的哦!

在这里插入图片描述
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值