|  | @ -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);
 | 
	
		
			
				|  |  |     }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | }
 |