签名算法已在各版本SDK中封装,无需自己编写方法
[去下载SDK]
签名算法是一种安全校验的机制,具体签名算法流程如下
第1步:将请求参数所有字段与对应的值 组成 key=value 的形式 (除signature字段外,此时还没生成signature字段)
第2步:将所有键值对以字段名排序(key的英文字典排序)
第3步:排序后的键值对,只取值拼接得到 strValues
第4步:拼接后的字符串分别在首尾拼上secret,得到 secret+strValues+secret(加号为字符串连接符)
第5步:将第4步中得到的字符串 secret+strValues+secret 进行MD5加密 获得最终的`signature`的值
以下为java参考。已包含在SDK [去下载SDK],直接使用SDK即可
/**
* 获取到签名的方法
* @param paramMap 参数组成的键值对
* @param secret
* @return
*/
public static String getSignature(Map<String, String> paramMap, String secret) {
List<String> paramKeys = new ArrayList<String>();
for (Map.Entry entry : paramMap.entrySet()) {
paramKeys.add(entry.getKey().toString());
}
// 对字段名进行排序,默认按字母的字典序排列
Collections.sort(paramKeys);
StringBuilder sb = new StringBuilder();
//首先拼接上secret
sb.append(secret);
if (paramKeys.size() > 0) {
for (String paramName : paramKeys) {
if (!"signature".equals(paramMap.get(paramName))) {
String value = paramMap.get(paramName);
if (value != null && !"".equals(value)) {
sb.append(value);
}
}
}
}
//尾拼接上secret
sb.append(secret);
return MD5Util.encode(sb.toString());
}