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