在和外部公司联调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; }