|
@ -0,0 +1,83 @@
|
|
|
package com.yihu.jw.care.util;
|
|
|
|
|
|
import javax.crypto.Mac;
|
|
|
import javax.crypto.spec.SecretKeySpec;
|
|
|
import java.io.UnsupportedEncodingException;
|
|
|
import java.net.URLEncoder;
|
|
|
import java.security.InvalidKeyException;
|
|
|
import java.security.NoSuchAlgorithmException;
|
|
|
import java.util.Base64;
|
|
|
|
|
|
/**
|
|
|
* Created with IntelliJ IDEA.
|
|
|
*
|
|
|
* @Author: yeshijie
|
|
|
* @Date: 2021/9/2
|
|
|
* @Description:
|
|
|
*/
|
|
|
public class OneNetUtil {
|
|
|
|
|
|
private static final String MasterAPIkey ="Da0iDvhQ5H8OD6phWq=tMubBcBw=";
|
|
|
private static final String access_key ="WikrY0Zy/BB308DZhplru4Mc65OijFqH35nMEh4xre0=";
|
|
|
|
|
|
public static String assembleToken(String version, String resourceName, String expirationTime, String signatureMethod, String accessKey)
|
|
|
throws UnsupportedEncodingException, NoSuchAlgorithmException, InvalidKeyException {
|
|
|
StringBuilder sb = new StringBuilder();
|
|
|
String res = URLEncoder.encode(resourceName, "UTF-8");
|
|
|
String sig = URLEncoder.encode(generatorSignature(version, resourceName, expirationTime
|
|
|
, accessKey, signatureMethod), "UTF-8");
|
|
|
sb.append("version=")
|
|
|
.append(version)
|
|
|
.append("&res=")
|
|
|
.append(res)
|
|
|
.append("&et=")
|
|
|
.append(expirationTime)
|
|
|
.append("&method=")
|
|
|
.append(signatureMethod)
|
|
|
.append("&sign=")
|
|
|
.append(sig);
|
|
|
return sb.toString();
|
|
|
}
|
|
|
|
|
|
public static String generatorSignature(String version, String resourceName, String expirationTime, String accessKey, String signatureMethod)
|
|
|
throws NoSuchAlgorithmException, InvalidKeyException {
|
|
|
String encryptText = expirationTime + "\n" + signatureMethod + "\n" + resourceName + "\n" + version;
|
|
|
String signature;
|
|
|
byte[] bytes = HmacEncrypt(encryptText, accessKey, signatureMethod);
|
|
|
signature = Base64.getEncoder().encodeToString(bytes);
|
|
|
return signature;
|
|
|
}
|
|
|
|
|
|
public static byte[] HmacEncrypt(String data, String key, String signatureMethod)
|
|
|
throws NoSuchAlgorithmException, InvalidKeyException {
|
|
|
//根据给定的字节数组构造一个密钥,第二参数指定一个密钥算法的名称
|
|
|
SecretKeySpec signinKey = null;
|
|
|
signinKey = new SecretKeySpec(Base64.getDecoder().decode(key),
|
|
|
"Hmac" + signatureMethod.toUpperCase());
|
|
|
|
|
|
//生成一个指定 Mac 算法 的 Mac 对象
|
|
|
Mac mac = null;
|
|
|
mac = Mac.getInstance("Hmac" + signatureMethod.toUpperCase());
|
|
|
|
|
|
//用给定密钥初始化 Mac 对象
|
|
|
mac.init(signinKey);
|
|
|
|
|
|
//完成 Mac 操作
|
|
|
return mac.doFinal(data.getBytes());
|
|
|
}
|
|
|
|
|
|
public enum SignatureMethod {
|
|
|
SHA1, MD5, SHA256;
|
|
|
}
|
|
|
|
|
|
public static void main(String[] args) throws UnsupportedEncodingException, NoSuchAlgorithmException, InvalidKeyException {
|
|
|
String version = "2018-10-31";
|
|
|
String resourceName = "mqs/A1EB10110CFA9E06D6209E40C4A6D7976";
|
|
|
String expirationTime = System.currentTimeMillis() / 1000 + 100 * 24 * 60 * 60 + "";
|
|
|
String signatureMethod = SignatureMethod.SHA1.name().toLowerCase();
|
|
|
String accessKey = "KuF3NT/jUBJ62LNBB/A8XZA9CqS3Cu79B/ABmfA1UCw=";
|
|
|
String token = assembleToken(version, resourceName, expirationTime, signatureMethod, accessKey);
|
|
|
System.out.println("Authorization:" + token);
|
|
|
}
|
|
|
|
|
|
}
|