描述 调用接口(API)时需要对请求参数进行签名验证,服务器也会对该请求参数进行验证是否合法。
算法
根据参数名称将你需要签名的请求参数按照 key 的字母先后顺序排序:key + value .... key +value,value 无需编码。如果某个变量没有值,
那么该变量的 key 和 value 对将不出现在请求的接口字段的签名明文中,
如:将 foo=1,bar=2,baz=3 排序为
bar=2,baz=3,foo=1
参数名和参数值链接后,得到拼装字符串 bar2baz3foo1
将 privateKey 拼接到参数字符尾部进行 MD5 加密,再转化成大写,格式是
(md5(key1=value1&key2=value2...privateKey)).upcase
实例:
以下实例只体现逻辑,例如
应用id: account=12345678
标识: beisenCode=00000000
授权类型: grantType=client_credentials
第一步: 按照参数名称升序排列
account=12345678
beisenCode=00000000
grantType=client_credentials
第二步: 拼装字符串
连接参数名与参数值,并加上 privateKey(app_key=123456abcdefg) 值参与排序: account=9BeLsenCy&app_key=zxurjjfhydkyf&beisenCode=000000&grantType=client_credentials&app_key=ZykXL3TeYDwVXDmG
第三步: 计算 MD5 得
D275804734B4CD21E898E1E8D6924687