版本比较

标识

  • 该行被添加。
  • 该行被删除。
  • 格式已经改变。

...

代码块
languagejava
themeEclipse
/**
 * 生成signature方法 CHARSET=utf-8
 * param data 参数map
 * param secrect 密钥
 */
public static String HmacSha256(SortedMap<String, Object> data, String secrect) {
    byte[] hash = new byte[0];
    try {
        String stringToSign = canonicalize(data);
        Mac mac = Mac.getInstance(HmacSHA256);
        SecretKeySpec secretKeySpec = new SecretKeySpec(secrect.getBytes(CHARSET), mac.getAlgorithm());
        mac.init(secretKeySpec);
        hash = mac.doFinal(stringToSign.getBytes(CHARSET));
    } catch (Exception e) {
        logger.error("HmacSha256 error!", e);
    }
    return DatatypeConverter.printBase64Binary(hash);
}

public static String canonicalize(SortedMap<String, Object> sortedParamMap) {
    if (sortedParamMap.isEmpty()) {  
        return "";  
    }  
    StringBuffer buffer = new StringBuffer();  
    Iterator<Entry<String, Object>> iter = sortedParamMap.entrySet().iterator();
    while (iter.hasNext()) {  
        Entry<String, Object> kvpair = iter.next();
        buffer.append(percentEncodeRfc3986(kvpair.getKey()));
        buffer.append("=");  
        buffer.append(kvpair.getValue());
        if (iter.hasNext()) {  
            buffer.append("&");  
        }  
    }   
    return buffer.toString();  
}

...