· 8 years ago · Dec 30, 2017, 11:50 AM
1public String computeSignature(String path, String timestamp, String keyString) throws GeneralSecurityException, UnsupportedEncodingException {
2
3 SecretKey secretKey = null;
4
5 byte[] keyBytes = keyString.getBytes();
6 secretKey = new SecretKeySpec(keyBytes, "HmacSHA512");
7
8 Mac mac = Mac.getInstance("HmacSHA512");
9
10 mac.init(secretKey);
11
12 byte[] text = encodeURL(path, timestamp).getBytes();
13
14 return new String(Base64.encodeBase64(mac.doFinal(text))).trim();
15 }
16
17 public String encodeURL(String path, String timestamp){
18 Map<String, String> m = new LinkedHashMap<>();
19 m.put("method", path);
20 m.put("tonce", timestamp);
21 String encodedURL = m.keySet().stream()
22 .map(key -> key + "=" + encodeValue(m.get(key)))
23 .collect(joining("&", "", ""));
24 return encodedURL;
25 }
26
27 public String encodeValue(String value) {
28 try {
29 return URLEncoder.encode(value, StandardCharsets.UTF_8.toString());
30 } catch (UnsupportedEncodingException e) {
31 e.printStackTrace();
32 }
33 return null;
34 }