API接口使用AES加解密对接-示例
Example1: GET请求和响应, 获取任务详情
示例中使用python语言,实际语言可自行选择。
import requests
url = "http://localhost:8000/service/cloud/detail"
aeskey = "airudderredduria" # 密钥
query_string = "TaskID=69f531a01a9df58aa6de2487be610abb" #原始数据
encrypt_data = aes_encrypt(query_string, aeskey).decode() # 对原始数据进行aes加密
encrypt_sign = sha256_sign(query_string) # 对原始数据进行sha256 ,生成签名
print("encrypt_data:", encrypt_data) # 打印加密后的数据
print("encrypt_sign:", encrypt_sign) # 打印签名
# encrypt_data: 打印加密后的数据
qbj8cnqKnqR66qDS49ib9ymU1mpMCyp8Dm0gS1VvmnEqTxPGSBzruAU1sapP+cye
# query_sign: 加密后的签名
6956d7af4c89b89f19f9ae0a8be4bcf12abe7c6ed893691733f3480ad3f3aabc
url = "{}?{}".format(url, encrypt_data)
headers = {
'Authorization': 'Token sueT3jBg7l9jirwKRZkg4KbxsmIs2hiPQbKLrrNSg8q2UphI4CS3jaV7j34tEt8s',
'Is-Encrypted': '1', # 标记加密
'Signed': '6956d7af4c89b89f19f9ae0a8be4bcf12abe7c6ed893691733f3480ad3f3aabc' # 签名放在header中
}
response = requests.request("GET", url, headers=headers)
print(response.content)
Example2: POST请求和响应, 创建任务
import requests
url = "http://localhost:8000/service/cloud/task"
# 原始数据
body = """{
"TaskName": "test_detail_robot_id",
"ScheduleStartTime": "2020-09-15 11:14:37",
"ScheduleEndTime": "2020-09-15 11:18:37",
"RobotID": "Promotion_ID_Jessica_Adakami",
"SIPLine": "FS_Line",
"RepeatInterval": 10,
"RepeatNumber": 3,
"Details": [
{
"Debtor": "y",
"Mobile": "+8612345678",
"LoanDate": "2019-06-01",
"DueDate": "2019-06-10",
"Arrears": 100,
"LoanAmount": 105,
"Unit": "Dollar",
"Platform": "adakami",
"borrower_name": "borrower_name",
"borrower_mobile": "borrower_mobile",
"borrowed_date": "2019-01-01",
"RobotID": "Promotion_ABC_test2"
}
],
"Type": "normal"
}"""
aeskey = "airudderredduria" # 密钥
encrypt_data = aes_encrypt(body, aeskey).decode() # 对body进行Aes加密
encrypt_sign = sha256_sign(body) # 对body进行sha256 加密,生成签名
print("encrypt_data:", encrypt_data)
print("encrypt_sign:", encrypt_sign)
#encrypt_data: 加密后的body
cvaecnwEIYUodB/sEgkOXd/J3aMWh+TzdzoFhl3Fkua84Ks3RUA98IWqAIwQNYBDiOY50O+CHBSQvD32HpNk+jTtHhZlAZTAPKTmgECS1n3eXKf0P5OvPsNgRrC+KgNsboCnNQaTt8L4T/Nm975bAwilXrU+K/Jump6CLoOVYorMvJjMVUcHryz7NDo7ShGQ1sQVOWHenTI5Vd1gJ4AT+QoNjO/a6EV4qMT8LAyWJoX8LQHDzy9LjZaQEpoID/jVu8UI+ew6elo68iBCYG560lQg8TWlz0w9IuGsHCwN+E8U56vTT394IRCRkeCz1Q8AILbqxHq72/kEHHqQ9pjfNqLXX3RWnTI12r1sxqX0ylTx6L60d13WOp4JvhzvRB1P58/lOQ27pkx1TkQOfx+PeMC36htnZnKMmkiI+I2Z/jxADekOY1n9FkbCj+3IKibVpy+hJQPDQs5jW6ze1UlgVAswONjXdwWZrNSHRJdm2ck/GA8hpVgx98FkTRZG4jA3t31vKx36N6JxEh/zTrEONS5J/hF8FuTT6Pew5tBpgVJy/ZlzHrqY56FV0IqvkdZBU7qZQiIcqTIMYksLaa5L0FOjrjZBDw7Y/RvccxZ/Od4N0X7RUZrZ6mMBGIdkwGTYy0um/judYK8f2KSB8FePXhYe+TfpcqziqPnXRCKKv/L/YIrOZqkOOVNHiu7GFfP2Nb2L+osx3VQ6MbPbY4kpb/KBz22bWxt5ZCoTsB2j6arK69uxQ3bEI5bj00BcaJ7r9Udn3LCxDzixJ8vJveVeQjmwAR3JEDgkmLtPl8wsLSFCjlxGGWnnCUrLgCGHyIPcD1tZGfyPiX5cSE+iXU0qk66ubTYTRrCcAjHLS6ur/l1QuYo9bpaSNWYoqagyea/j15mZjtNMoxp0cWLWaKIENXAvDz2+qWlJc9hWcSUBUU+BwSU09QIBJhqZ/fYyOIoyZmVIY5ViKefvIYFnTk72owz3Zy07ATAU/tnp3MD+qODNLUKrqepQcRtu1vxIApLGszw+89zASlueyngen95ShA==
#encrypt_sign: 加密后的签名#
b240a632ccda6d0df1a75d79e91229848c26cfdc7eb5d60899aee22445450035
headers = {
'Authorization': 'Token sueT3jBg7l9jirwKRZkg4KbxsmIs2hiPQbKLrrNSg8q2UphI4CS3jaV7j34tEt8s',
'Is-Encrypted': '1', # 标记加密
'Signed': 'b240a632ccda6d0df1a75d79e91229848c26cfdc7eb5d60899aee22445450035' # 将签名放入header中
}
response = requests.request("POST", url, headers=headers, data=encrypt_data) # data传入aes加密后的body
content = response.content
decrypt_data = aes_decrypt(content, aeskey)
decrypt_sign = sha256_sign(decrypt_data)
signed = response.headers.get('Signed', '')
print("decrypt_data:", decrypt_data)
print("decrypt_sign:", decrypt_sign)
print("signed :", signed)
#decrypt_data: b'{"data": {}, "status": "Task name already exists for 69f531a01a9df58aa6de2487be610abb", "code": 10403}'
#decrypt_sign: 1e403b939a15857a2a670cf44daa5de6133921b701d76c01d1c108c6622010de
#signed : 1e403b939a15857a2a670cf44daa5de6133921b701d76c01d1c108c6622010de
if decrypt_sign == signed:
pass
# 后续处理
修改于 2022-11-14 11:13:28