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