Пример #1
0
 def iot_delete_answer(self):
     get_return = iot_get_return()
     csv_dict = Read_csv().read_csv()
     secretKey = get_return["data"]['secretKey']  # 每个接口必须要传AESkey
     secretuId = get_return["data"]['uId']  # 每个接口必须要传uId
     # 获取到的字符串格式数据转换成dict格式
     interface = json.loads(csv_dict[self.key], encoding='utf-8')
     # 读取url的value
     url = get_serveraddress.get_serveraddress(
     )[adressIndex] + interface["url"]
     # 判断uId 和token 字符串
     if "uId" in url:
         url = url.replace("uId", get_return["data"]['uId'])
     # 读取url的data
     data = interface["data"]
     if "token" in data:
         data["token"] = get_return["data"]['token']
     req_url = url + '?' + parse.urlencode(data)  # 构建get请求
     r = requests.delete(url=req_url)  # 发送请求
     getanswer = json.loads(r.text, encoding='utf-8')
     msgContent = getanswer['msgContent']
     # 解密msgContent
     msgContent_base64 = Base64(msgContent)
     msgContent_base64 = msgContent_base64.b64decode()
     return_data = Iot_encry_decry(msgContent_base64, secretKey, secretuId)
     return_data = return_data.decry()
     return return_data
    def get_msgContent(self):
        self.key = self.key.encode("utf-8")  #先转换成字节
        #print(self.key)

        if not (len(self.key) % self.BS):
            new_data = self.key + (16 * chr(16)).encode("utf-8")
            #print(new_data)
        else:
            new_data = self.pad(self.key)
            #print(new_data)

        #调用生成密钥的函数
        secretuId = iot_sha256.md5(self.secretuId)
        AESkey = self.AESkey + secretuId[-16:] + "=="  # 首先字符串拼接==
        AESkey = AESkey.encode("utf-8")
        AESkey = base64.b64decode(AESkey)
        cryptor = AES.new(AESkey, self.mode)
        # 这里密钥key 长度必须为16(AES-128),
        # 24(AES-192),或者32 (AES-256)Bytes 长度
        # 目前AES-128 足够目前使用
        cipherdata = cryptor.encrypt(new_data)
        base64_data = Base64(cipherdata)
        msgContent = base64_data.b64encode()
        #print(msgContent)   # 字符串
        return msgContent
Пример #3
0
    def decry(self):
        # 直接传获取到的消息

        msgContent_base64 = Base64(msgContent)
        msgContent_base64 = msgContent_base64.b64decode()
        AESkey = self.AESkey + "=="  # 首先字符串拼接==
        AESkey = AESkey.encode("utf-8")
        AESkey = base64.b64decode(AESkey)
        cryptor = AES.new(AESkey, self.mode)
        cipherdata = cryptor.decrypt(msgContent_base64)
        cipherdata = cipherdata.decode()
        cipherdata = self.unpad(cipherdata)
        print("cipherdata is ", cipherdata)
        cipherdata = json.loads(cipherdata, encoding='utf-8')
        print("cipherdatalast is ", cipherdata)
        print("cipherdatalast'type", type(cipherdata))
        return cipherdata
Пример #4
0
 def iot_post_answer(self):
     get_return = iot_get_return()
     csv_dict = Read_csv().read_csv()
     secretKey = get_return["data"]['secretKey']  # 每个接口必须要传AESkey
     secretuId = get_return["data"]['uId']  # 每个接口必须要传uId
     # 获取到的字符串格式数据转换成dict格式
     interface = json.loads(csv_dict[self.key], encoding='utf-8')
     # 读取url的value
     url = get_serveraddress.get_serveraddress(
     )[adressIndex] + interface["url"]
     # 判断uId 和token 字符串
     if "uId" in url:
         url = url.replace("uId", get_return["data"]['uId'])
     # 读取url的data
     data = interface["data"]
     if "token" in data:
         data["token"] = get_return["data"]['token']
     generate_nonce = iot_generate_nonce()  # 产生随机数
     timestamp = time.time()
     timestamp = str(int(round(timestamp * 1000)))
     data = json.dumps(data)  # 字符串数据
     iot_aes = Iot_aes(data, secretKey, generate_nonce, timestamp,
                       secretuId)
     msgContent = iot_aes.get_msgContent()
     signature = iot_aes.get_signature()
     message = {
         "signature": signature,
         "nonce": generate_nonce,
         "timestamp": timestamp,
         "msgContent": msgContent
     }
     r = requests.post(url=url, json=message)  # 发送请求
     postanswer = json.loads(r.text, encoding='utf-8')
     print(postanswer)
     msgContent = postanswer['msgContent']
     # 解密msgContent
     msgContent_base64 = Base64(msgContent)
     msgContent_base64 = msgContent_base64.b64decode()
     return_data = Iot_encry_decry(msgContent_base64, secretKey, secretuId)
     return_data = return_data.decry()
     return return_data