签名

签名规则:

1:签名中出现&,为连接符,非运算符,签名规则:body体中signature不参与签名,但header中的timestamp参与body签名

2:其余以参数名的字典升序排序(ascii码升序),且值不为空,并拼接"key=value"格式,多参数之间以&链接,得到A 值为空,不参与签名 只有数字类型以及字符串类型,参与签名

3:timestamp=时间戳,得到B,然后B&A得到C

4:将C使用MD5加密并全部字母变为大写,得到最终值D,即为signature值

5:body中需要增加signature,然后对body中数据,转为json后,进行encode转码,得到E

6:用公司公钥将E进行加密,得到F,其请求key值为data F长度以100长度分割,进行分段加密,加密后的值,需以用","进行拼接 7:最终请求参数结构如下:

//请求header
{
    "timestamp": 11111131331,
    "trace": "xxxxxx"
}

//请求body
{
    "data": F
}

签名示例:

1:a=1&b=2&c=3&timestamp=11111131331,即为A

2:timestamp=11111131331,即为B

3: A&B 即 timestamp=11111131331&a=1&b=2&c=3&timestamp=11111131331 为最终C取值

4:将C进行MD5加密并全部字母变为大写,得到最终签名密钥

5:对所有body参数,转为json后,encode转码,得到E

6:RSA加密 用公司公钥将E加密,得到F 若E长度>100,则RSA(E[0-100])=E1,RSA[E[剩余长度]]=E2,最终F=E1,E2

增加签名后的内容:

//请求header
{
   "timestamp": 11111131331,
   "trace": "xxxxxx"
}

//请求body
{
   "a": 1,
   "b": 2,
   "c": "3",
   "signature": "44b3a042-dd5d-4796-92e1-651927b6ada9"
}

参数加密后的内容:

//请求header
{
    "timestamp": 11111131331,
    "trace": "xxxxxx"
}

//请求body
{
    "data": F
}

JAVA DEMO

https://github.com/CTradeExchange/multimarket-demo

Last updated