腾讯云只提供了c sdk,需要在linux里面编译后执行。也可以修改腾讯云在物联网通讯产品里的python脚本,把sha256改为sha1。之后进行第六步。
import hashlib
import random
import time
import hmac
import base64
if __name__ == '__main__':
sign_format = '%s\n%s\n%s\n%s\n%s\n%d\n%d\n%s'
url_format = '%s://ap-guangzhou.gateway.tencentdevices.com/device/register'
request_format = "{\"ProductId\":\"%s\",\"DeviceName\":\"%s\"}"
device_name = 'dev002'
product_id = 'JCZDFSOKXS'
product_secret = 'X42fPqwHxPiIBwY94cY5sQ1Y'
request_text = request_format % (product_id, device_name)
request_hash = hashlib.sha1(request_text.encode("utf-8")).hexdigest()
nonce = random.randrange(2147483647)
timestamp = int(time.time())
sign_content = sign_format % (
"POST", "ap-guangzhou.gateway.tencentdevices.com",
"/device/register", "", "hmacsha1", timestamp,
nonce, request_hash)
print("\nsign_content: \n" + sign_content)
sign_base64 = base64.b64encode(hmac.new(product_secret.encode("utf-8"),
sign_content.encode("utf-8"), hashlib.sha1).digest())
print("sign_base64: " + str(sign_base64))
1. 下载后解压,qcloud_iot_mqtt_sign-master.zip
2. 按照readme文件修改文件,选择编译器,编译环境
3. 打开linux虚拟机,打开vim,进入,安装cmake
4. 执行bash cmake_build.sh
5. 进入out/bin,执行./qcloud-dynreg-sign product_id product_secretkey device_name
6. 复制生成的参数到apipost
{ "Response": { "Len": 53, "Payload": "b05ZCOCKKjDqQ+yVKergD2jGAnXjYcsGbEAOi8UB+4r6oxY6ZI+QiJmfLj9CBDDssrfLw6QRlLyfo+qyN1lH2A==", "RequestId": "f4d2d833-b2f9-466a-bd24-691750eb2f6f", "State": 1 } }
7. base64解码https://the-x.cn/base64/
8. 去掉空格回车http://www.esjson.com/delSpace.html
9. aes解密https://the-x.cn/cryptography/Aes.aspx
注意第四项是产品秘钥,第五项是16个0
结果中的psk就是设备秘钥