​ 对接口中使用到的接口数据进行数据签名处理,根据接口说明对接口中的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-15 16:16
最后编辑:泛云智能  更新时间:2021-10-21 14:45