在和外部公司联调HTTP接口时,对方要求调用的接口需要计算token,给到的规则如下:
1) 所有的参数值必须经过urlencode,编码为utf-8;
2) 对编码后数据按照key值进行字典升序排序;
3)将所有的参数按照排序的顺序拼接成字符串 ,格式如下: k1=v1&k2=v2&k3=v3;
4) 将第三步的算出的值计算md5值,md5加密的值小写
请你编写一段方法计算token值
["query=中文","version=1.0.0"]
"be61411477191613e6df13bde939297a"
请注意会有中文;
public String getToken(Map<String, String> params) {
List<String> ss = params.keySet().stream().sorted().map(
k -> {
String v = params.get(k);
String kv = null;
try {
kv = k + "=" + URLEncoder.encode(v, "utf-8");
} catch (Exception e) {
}
return kv;
}
).collect(Collectors.toList());
String token = null;
try {
token = new String(MessageDigest.getInstance("md5").digest(String.join("&", ss).getBytes()));
} catch (Exception e) {
}
return token;
}