|  | @ -0,0 +1,73 @@
 | 
	
		
			
				|  |  | package com.yihu.jw.util.tencent;
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | import sun.misc.BASE64Encoder;
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | import javax.crypto.Mac;
 | 
	
		
			
				|  |  | import javax.crypto.spec.SecretKeySpec;
 | 
	
		
			
				|  |  | import java.util.Random;
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | /**
 | 
	
		
			
				|  |  |  * Created with IntelliJ IDEA.
 | 
	
		
			
				|  |  |  *
 | 
	
		
			
				|  |  |  * @Author: yeshijie
 | 
	
		
			
				|  |  |  * @Date: 2021/5/18
 | 
	
		
			
				|  |  |  * @Description: 腾讯视频云存储工具类
 | 
	
		
			
				|  |  |  */
 | 
	
		
			
				|  |  | public class TencentVODUtil {
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     private String secretId;
 | 
	
		
			
				|  |  |     private String secretKey;
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     //签名算法
 | 
	
		
			
				|  |  |     private static final String HMAC_ALGORITHM = "HmacSHA1";
 | 
	
		
			
				|  |  |     private static final String CONTENT_CHARSET = "UTF-8";
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     public static byte[] byteMerger(byte[] byte1, byte[] byte2) {
 | 
	
		
			
				|  |  |         byte[] byte3 = new byte[byte1.length + byte2.length];
 | 
	
		
			
				|  |  |         System.arraycopy(byte1, 0, byte3, 0, byte1.length);
 | 
	
		
			
				|  |  |         System.arraycopy(byte2, 0, byte3, byte1.length, byte2.length);
 | 
	
		
			
				|  |  |         return byte3;
 | 
	
		
			
				|  |  |     }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     // 获取签名
 | 
	
		
			
				|  |  |     public String getUploadSignature() throws Exception {
 | 
	
		
			
				|  |  |         String strSign = "";
 | 
	
		
			
				|  |  |         String contextStr = "";
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |         // 生成原始参数字符串
 | 
	
		
			
				|  |  |         long currentTime = System.currentTimeMillis() / 1000;
 | 
	
		
			
				|  |  |         int random = new Random().nextInt(Integer.MAX_VALUE);
 | 
	
		
			
				|  |  |         // 签名有效期:30 分钟
 | 
	
		
			
				|  |  |         int signValidDuration = 1800;
 | 
	
		
			
				|  |  |         long endTime = (currentTime + signValidDuration);
 | 
	
		
			
				|  |  |         contextStr += "secretId=" + java.net.URLEncoder.encode(secretId, "utf8");
 | 
	
		
			
				|  |  |         contextStr += "¤tTimeStamp=" + currentTime;
 | 
	
		
			
				|  |  |         contextStr += "&expireTime=" + endTime;
 | 
	
		
			
				|  |  |         contextStr += "&random=" + random;
 | 
	
		
			
				|  |  |         try {
 | 
	
		
			
				|  |  |             Mac mac = Mac.getInstance(HMAC_ALGORITHM);
 | 
	
		
			
				|  |  |             SecretKeySpec secretKey = new SecretKeySpec(this.secretKey.getBytes(CONTENT_CHARSET), mac.getAlgorithm());
 | 
	
		
			
				|  |  |             mac.init(secretKey);
 | 
	
		
			
				|  |  |             byte[] hash = mac.doFinal(contextStr.getBytes(CONTENT_CHARSET));
 | 
	
		
			
				|  |  |             byte[] sigBuf = byteMerger(hash, contextStr.getBytes("utf8"));
 | 
	
		
			
				|  |  |             strSign = base64Encode(sigBuf);
 | 
	
		
			
				|  |  |             strSign = strSign.replace(" ", "").replace("\n", "").replace("\r", "");
 | 
	
		
			
				|  |  |         } catch (Exception e) {
 | 
	
		
			
				|  |  |             throw e;
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  |         return strSign;
 | 
	
		
			
				|  |  |     }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     private String base64Encode(byte[] buffer) {
 | 
	
		
			
				|  |  |         BASE64Encoder encoder = new BASE64Encoder();
 | 
	
		
			
				|  |  |         return encoder.encode(buffer);
 | 
	
		
			
				|  |  |     }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     public void setSecretId(String secretId) {
 | 
	
		
			
				|  |  |         this.secretId = secretId;
 | 
	
		
			
				|  |  |     }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     public void setSecretKey(String secretKey) {
 | 
	
		
			
				|  |  |         this.secretKey = secretKey;
 | 
	
		
			
				|  |  |     }
 | 
	
		
			
				|  |  | }
 |