对接口中使用到的接口数据进行数据签名处理,根据接口说明对接口中的key值升序排序后对非空的value进行拼接,在拼接末尾加上对接方的CLIENT_ID的值。最后把整个字符使用md5加密,加密后的值使用大写传输。固定签名字段sign。当返回的数据属于如下结构时,签名参数不包含对应的code,message,sign,只是对data中的数据进行签名,如无特殊说明,文件、空字符串不参加签名。不对数组对象进行签名,但是需要对数组字符串进行拼接。
签名key为: CLIENT_ID
如CLIENT_ID值为:6abdfaf4f1ac4d95baa702ff2668f6a6
案例1:
{
"ids":[
"id11111",
"id22222"
],
"powerstate":"false",
"content":{
"9e171f63d029406b9ff03d378bba503f":{
"1":{
"1":{
"01":"255"
},
"2":{
"01":"200"
}
}
}
},
"token":"MJAZZDIXYWUTY2QYZC0ZNTAWLWIXYTATZTQ5OTLHMTK1NZY0",
"sign":"34E545ADB39D674D37F4398970970D73"
}
排序后的字符串:content.9e171f63d029406b9ff03d378bba503f.1.1.01=255&content.9e171f63d029406b9ff03d378bba503f.1.2.01=200&ids0=id11111&ids1=id22222&powerstate=false&token=MJAZZDIXYWUTY2QYZC0ZNTAWLWIXYTATZTQ5OTLHMTK1NZY0&key=6abdfaf4f1ac4d95baa702ff2668f6a6
map后的key一次使用上一个节点的key加”.”拼接,数组字符串的前缀为key家索引。如案例一中的ids中的内容拼接为:ids0=id11111&ids1=id22222
签名值:34E545ADB39D674D37F4398970970D73
案例2:
{
"id":"0c84773665f74b21a7bdb932386a5e68",
"first":false,
"content":{
"red":"200"
},
"group":{
"color":"Red",
"powerstate":"true"
},
"token":"MJAZZDIXYWUTY2QYZC0ZNTAWLWIXYTATZTQ5OTLHMTK1NZY0",
"sign":"C8C30A9C851C9BDC6495C12C30D027DE"
}
排序后的字符串:
content.red=200&first=false&group.color=Red&group.powerstate=true&id=0c84773665f74b21a7bdb932386a5e68&token=MJAZZDIXYWUTY2QYZC0ZNTAWLWIXYTATZTQ5OTLHMTK1NZY0&key=6abdfaf4f1ac4d95baa702ff2668f6a6
签名值:C8C30A9C851C9BDC6495C12C30D027DE
最后编辑:泛云智能 更新时间:2021-10-21 14:45