有奖捉虫:办公协同&微信生态&物联网文档专题 HOT

Java 签名算法

以下是生成签名算法,合作伙伴可以直接使用。
public static String sign(List<String> values, String ticket) { //values传ticket外的其他参数
if (values == null) {
throw new NullPointerException("values is null");
}
values.removeAll(Collections.singleton(null));// remove null
values.add(ticket);
java.util.Collections.sort(values);

StringBuilder sb = new StringBuilder();
for (String s : values) {
sb.append(s);
}
return Hashing.sha1().hashString(sb, Charsets.UTF_8).toString().toUpperCase();
}
注意
Hashing 使用的是 com.google.common.hash.Hashing,版本是 guava-18.0。

调用方法

获取 token 和 ticket 后再用 ticket 对数据进行签名,相关代码如下所示:
String accessToken = client.getAccessToken();//http 请求
String ticket = client.getTicket(accessToken);//http 请求
String sign = SignUtils.sign(data, ticket);