HTTP API 加签名规则

签名步骤

  1. 将所有参数(注意是所有参数),除去sign本身,以及值是空的参数,按参数名字母升序排序。
  2. 然后把排序后的参数按参数1值1参数2值2…参数 n 值n(这里的参数和值必须是传输参数的原始值,不能是经过处理的,如不能将"转成”后再拼接)的方式拼接成一个字符串。
  3. 把分配给接入方的验证密钥key拼接在第 2 步得到的字符串后面。
  4. 计算步骤 3 所得字符串的 md5 值,得到 32 位字符串。然后转成大写, 得到的字符串作为 sign 的值。

签名示例

假设传输的数据是 http://www.xxx.com/interface.aspx?sign=sign_value&p2=v2&p1=v1&method=cancel&p3=&pn=vn(实际情况最好是通过 post 方式发送),其中 sign 参数对应的 sign_value 就是签名的值。

  1. 拼接字符串,首先去除 sign 参数本身,然后去除值是空的参数 p3,剩下 p2=v2&p1=v1&method=cancel&pn=vn,然后按参数名字符升序排序,method=cancel&p1=v1&p2=v2&pn=vn。
  2. 然后做参数名和值的拼接,最后得到 methodcancelp1v1p2v2pnvn 。
  3. 在上面拼接得到的字符串后面加上验证密钥 key,我们假设是 abc,得到新的字符串 methodcancelp1v1p2v2pnvnabc 。
  4. 然后将这个字符串进行 md5 计算,假设得到的是 abcdef,然后转为大写,得到 ABCDEF 这个值即为sign签名值。

注意,计算 md5 之前请确保接口与接入方的字符串编码一致,如统一使用 utf-8 编码或者 GBK 编码,如果编码方式不一致则计算出来的签名会校验失败。

原文地址:https://www.cnblogs.com/seanvon/p/6479050.html