签名算法说明

最近更新时间:2019-08-21 17:16:55

Java 签名算法

以下是生成签名算法,合作伙伴可以直接使用。

public static String sign(List<String> values, String 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);