package com.yami.trading.huobi.hobi.internal;
|
|
import javax.crypto.Mac;
|
import javax.crypto.spec.SecretKeySpec;
|
import java.security.MessageDigest;
|
import java.util.Base64;
|
import java.util.HashMap;
|
import java.util.Map;
|
import org.json.JSONObject;
|
|
public class CryptoUtils {
|
|
public static void main(String[] args) throws Exception {
|
Map<String, Object> params = new HashMap<>();
|
params.put("marketType", 27);
|
params.put("plateType", 1);
|
params.put("rankType", 1);
|
params.put("page", 0);
|
params.put("pageSize", 50);
|
|
Map<String, Object> aa = new HashMap<>();
|
aa.put("transitional", new HashMap<String, Object>());
|
aa.put("adapter", new String[]{"xhr", "http"});
|
aa.put("transformRequest", new Object[]{null});
|
aa.put("transformResponse", new Object[]{null});
|
aa.put("timeout", 5000);
|
aa.put("xsrfCookieName", "XSRF-TOKEN");
|
aa.put("xsrfHeaderName", "X-XSRF-TOKEN");
|
aa.put("maxContentLength", -1);
|
aa.put("maxBodyLength", -1);
|
aa.put("env", new HashMap<>());
|
aa.put("headers", new HashMap<String, String>() {{
|
put("Accept", "application/json, text/plain, */*");
|
put("futu-x-csrf-token", "cd1zage106rT3rMaO8V7P4Cx");
|
}});
|
aa.put("baseURL", "/quote-api/quote-v2");
|
aa.put("params", params);
|
aa.put("method", "get");
|
aa.put("url", "/get-stock-list");
|
aa.put("params",params);
|
System.out.println(getToken(aa));
|
}
|
|
public static String HMACEncrypt(String text, String key) throws Exception {
|
Mac sha512_HMAC = Mac.getInstance("HmacSHA512");
|
SecretKeySpec secretKey = new SecretKeySpec(key.getBytes("UTF-8"), "HmacSHA512");
|
sha512_HMAC.init(secretKey);
|
return Base64.getEncoder().encodeToString(sha512_HMAC.doFinal(text.getBytes("UTF-8")));
|
}
|
|
public static String SHA256(String text) throws Exception {
|
MessageDigest digest = MessageDigest.getInstance("SHA-256");
|
byte[] hash = digest.digest(text.getBytes("UTF-8"));
|
return bytesToHex(hash);
|
}
|
|
public static String bytesToHex(byte[] bytes) {
|
StringBuilder result = new StringBuilder();
|
for (byte aByte : bytes) {
|
result.append(String.format("%02x", aByte));
|
}
|
return result.toString();
|
}
|
|
public static String stringify(Map<String, Object> map) {
|
JSONObject json = new JSONObject(map);
|
return json.toString();
|
}
|
|
public static String sss(Map<String, Object> e) throws Exception {
|
String data = stringify((Map<String, Object>)e.get("params"));
|
String encryptedText = HMACEncrypt(data, "quote_web");
|
String shortHash = SHA256(encryptedText.substring(0, 10)).substring(0, 10);
|
return shortHash;
|
}
|
|
public static String getToken(Map<String, Object> params) throws Exception {
|
Map<String, Object> aa = new HashMap<>();
|
//aa.put("params", params);
|
return sss(params);
|
}
|
}
|