|
@@ -0,0 +1,54 @@
|
|
|
+package com.miaxis.common.utils;
|
|
|
+
|
|
|
+import org.springframework.beans.factory.annotation.Value;
|
|
|
+import org.springframework.stereotype.Component;
|
|
|
+import sun.misc.BASE64Encoder;
|
|
|
+
|
|
|
+import javax.crypto.Mac;
|
|
|
+import javax.crypto.spec.SecretKeySpec;
|
|
|
+import java.util.Random;
|
|
|
+
|
|
|
+@Component
|
|
|
+public class VodSignature {
|
|
|
+ @Value("${cos.secretId}")
|
|
|
+ private String secretId;
|
|
|
+ @Value("${cos.secretKey}")
|
|
|
+ private String secretKey;
|
|
|
+ private long effectTime =3600 * 24 * 2;
|
|
|
+ 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 endTime = (System.currentTimeMillis() / 1000 + effectTime);// 签名有效期:2天
|
|
|
+ contextStr += "secretId=" + java.net.URLEncoder.encode(secretId, "utf8");
|
|
|
+ contextStr += "¤tTimeStamp=" + System.currentTimeMillis() / 1000;
|
|
|
+ contextStr += "&expireTime=" + endTime;
|
|
|
+ contextStr += "&random=" + new Random().nextInt(java.lang.Integer.MAX_VALUE);
|
|
|
+ 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);
|
|
|
+ }
|
|
|
+
|
|
|
+}
|