package com.tengxunyun.utils; import android.annotation.SuppressLint; import android.util.Base64; import android.util.Log; import com.tengxunyun.config.ParamPreference; import java.util.Random; import javax.crypto.Mac; import javax.crypto.spec.SecretKeySpec; /** * Created by yangc on 2017/5/6. * E-Mail:yangchaojiang@outlook.com * Deprecated: */ public class TencentUtils { private static final String MAC_NAME = "HmacSHA1"; private static final String ENCODING = "UTF-8"; private static String Original = "a=%s&b=%s&k=%s&e=%s&t=%s&r=10000s&f="; private static final String TAG="TencentUtils"; /** * @param SecretKey 密钥 * @param EncryptText 签名串 * @return * @throws Exception */ public static byte[] HmacSHA1Encrypt(String SecretKey, String EncryptText) throws Exception { byte[] data = SecretKey.getBytes(ENCODING); SecretKeySpec secretKey = new SecretKeySpec(data, MAC_NAME); Mac mac = Mac.getInstance(MAC_NAME); mac.init(secretKey); byte[] text = EncryptText.getBytes(ENCODING); return mac.doFinal(text); } public static long getLinuxDateSimple() { try { long unixTimestamp = System.currentTimeMillis() / 1000L; return unixTimestamp; } catch (Exception e) { e.printStackTrace(); } return -1; } @SuppressLint("SimpleDateFormat") public static long getFurureLinuxDate() { return 7776000; } private static String getRandomTenStr() { String randomstr = String.valueOf(new Random().nextInt(8) + 1); int random = new Random().nextInt(3) + 5; for (int i = 0; i < random; i++) { randomstr += String.valueOf(new Random().nextInt(9)); } return randomstr; } public static String getSignOriginal() { return String.format(Original, ParamPreference.TENCENT_COS_APPID, ParamPreference.TENCENT_COS_BUCKET, ParamPreference.TENCENT_COS_SECRET_ID, String.valueOf(getFurureLinuxDate()), String.valueOf(getLinuxDateSimple()+getFurureLinuxDate()), getRandomTenStr()); } /**** * 获取签名文件 **/ public static String getTencentSign() { try { String Original = TencentUtils.getSignOriginal(); byte[] HmacSHA1 = TencentUtils.HmacSHA1Encrypt( ParamPreference.TENCENT_COS_SECRET_KEY, Original); byte[] all = new byte[HmacSHA1.length + Original.getBytes(ENCODING).length]; System.arraycopy(HmacSHA1, 0, all, 0, HmacSHA1.length); System.arraycopy(Original.getBytes(ENCODING), 0, all, HmacSHA1.length, Original.getBytes(ENCODING).length); String SignData = Base64.encodeToString(all,Base64.NO_WRAP); return SignData; } catch (Exception e) { Log.d(TAG,e.getMessage()); } return "get sign failed"; } }