View Javadoc
1   package com.kdt.api;
2   
3   import java.io.UnsupportedEncodingException;
4   import java.security.MessageDigest;
5   import java.security.NoSuchAlgorithmException;
6   import java.util.ArrayList;
7   import java.util.Collections;
8   import java.util.HashMap;
9   import java.util.List;
10  
11  public class KdtApiProtocol {
12  	public static final String APP_ID_KEY = "app_id";
13      public static final String METHOD_KEY = "method";
14      public static final String TIMESTAMP_KEY = "timestamp";
15      public static final String FORMAT_KEY = "format";
16      public static final String VERSION_KEY = "v";
17      public static final String SIGN_KEY = "sign";
18      public static final String SIGN_METHOD_KEY = "sign_method";
19  
20      public static final int ALLOWED_DEVIATE_SECONDS = 600;
21  
22      public static final int ERR_SYSTEM = -1;
23      public static final int ERR_INVALID_APP_ID = 40001;
24      public static final int ERR_INVALID_APP = 40002;
25      public static final int ERR_INVALID_TIMESTAMP = 40003;
26      public static final int ERR_EMPTY_SIGNATURE = 40004;
27      public static final int ERR_INVALID_SIGNATURE = 40005;
28      public static final int ERR_INVALID_METHOD_NAME = 40006;
29      public static final int ERR_INVALID_METHOD = 40007;
30      public static final int ERR_INVALID_TEAM = 40008;
31      public static final int ERR_PARAMETER = 41000;
32      public static final int ERR_LOGIC = 50000;
33  
34      public static String sign(String appSecret, HashMap<String,String> parames){
35          Object[] keyArray = parames.keySet().toArray();
36          List<String> keyList = new ArrayList<String>();
37          for(int i = 0; i < keyArray.length; i++){
38              keyList.add((String)keyArray[i]);
39          }
40          Collections.sort(keyList);
41          String signContent = appSecret;
42  
43          for (String key : keyList) {
44              signContent += (key + parames.get(key));
45          }
46          signContent += appSecret;
47          return hash(signContent);
48      }
49      
50      private static String hash(String signContent){
51      	String hashResult = "";
52  		try {
53  			MessageDigest md = MessageDigest.getInstance("MD5");
54  			md.update(signContent.getBytes("UTF-8"));
55  	        byte byteData[] = md.digest();
56  	        StringBuffer sb = new StringBuffer();
57  	        for(int i = 0; i < byteData.length; i++){
58  	        	sb.append(Integer.toString((byteData[i] & 0xff) + 0x100, 16).substring(1));
59  	        }
60  	        hashResult = sb.toString().toLowerCase();
61  		} catch (NoSuchAlgorithmException | UnsupportedEncodingException e) {
62  		}
63          
64          return hashResult;
65      }
66  }