java
public class AliVoice {
private static final String HMAC_SHA1 = "HmacSHA1";
private static final String ACCESSKEYID = "阿里云id";
private static final String ACCESSKEYSECRET = "阿里云key" + "&";
public static String main() throws Exception {
long time = System.currentTimeMillis() / 1000;
String one = md5(time + "");
ArrayList<Map<String, String>> list = new ArrayList<Map<String, String>>();
TreeMap<String, String> map = new TreeMap<String, String>();
map.put("AccessKeyId", ACCESSKEYID);
map.put("Action", "CreateToken");
map.put("Version", "2019-02-28");
map.put("Format", "JSON");
map.put("RegionId", "cn-shanghai");
map.put("Timestamp", getUTCDate());
map.put("SignatureMethod", "HMAC-SHA1");
map.put("SignatureVersion", "1.0");
String key = one.substring(0, 8) + "-" +
one.substring(8, 12) + "-" +
one.substring(12, 16) + "-" +
one.substring(16, 20) + "-" +
one.substring(20, 24);
map.put("SignatureNonce", key);
String query = http_build_query(map);
String sign = "GET&%2F&" + URLEncoder.encode(query);
String signature = getSignature(sign);
String encode = URLEncoder.encode(signature);
String queryData = "Signature=" + encode + "&" + query;
String url = "http://nls-meta.cn-shanghai.aliyuncs.com/?" + queryData;
return url;
}
private static String getUTCDate() {
String dateStr = "";
Date date = null;
String months = "", days = "", hours = "", sec = "", minutes = "";
DateFormat format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'");
StringBuffer UTCTimeBuffer = new StringBuffer();
Calendar cal = Calendar.getInstance();
int zoneOffset = cal.get(java.util.Calendar.ZONE_OFFSET);
int dstOffset = cal.get(java.util.Calendar.DST_OFFSET);
cal.add(java.util.Calendar.MILLISECOND, -(zoneOffset + dstOffset));
int year = cal.get(Calendar.YEAR);
int month = cal.get(Calendar.MONTH) + 1;
int day = cal.get(Calendar.DAY_OF_MONTH);
int hour = cal.get(Calendar.HOUR_OF_DAY);
int minute = cal.get(Calendar.MINUTE);
int second = cal.get(Calendar.SECOND);
if (month < 10) {
months = "0" + String.valueOf(month);
} else {
months = String.valueOf(month);
}
if (minute < 10) {
minutes = "0" + String.valueOf(minute);
} else {
minutes = String.valueOf(minute);
}
if (day < 10) {
days = "0" + String.valueOf(day);
} else {
days = String.valueOf(day);
}
if (hour < 10) {
hours = "0" + String.valueOf(hour);
} else {
hours = String.valueOf(hour);
}
if (second < 10) {
sec = "0" + String.valueOf(second);
} else {
sec = String.valueOf(second);
}
UTCTimeBuffer.append(year).append("-").append(months).append("-").append(days);
UTCTimeBuffer.append("T").append(hours).append(":").append(minutes).append(":").append(sec).append("Z");
try {
date = format.parse(UTCTimeBuffer.toString());
dateStr = format.format(date);
} catch (Exception e) {
e.printStackTrace();
}
return dateStr;
}
public static String http_build_query(Map<String, String> array) {
String reString = "";
Iterator it = array.entrySet().iterator();
while (it.hasNext()) {
Map.Entry<String, Object> entry = (Map.Entry) it.next();
String key = entry.getKey();
Object value = entry.getValue();
reString += key + "=" + value + "&";
}
reString = reString.substring(0, reString.length() - 1);
reString = java.net.URLEncoder.encode(reString);
reString = reString.replace("%3D", "=").replace("%26", "&");
return reString;
}
public static String getSignature(String data) throws Exception {
byte[] keyBytes = ACCESSKEYSECRET.getBytes();
SecretKeySpec signingKey = new SecretKeySpec(keyBytes, HMAC_SHA1);
Mac mac = Mac.getInstance(HMAC_SHA1);
mac.init(signingKey);
BASE64Encoder base64Encoder = new BASE64Encoder();
String encode = base64Encoder.encode(mac.doFinal(data.getBytes()));
return encode;
}
public static String md5(String pwd) {
try {
MessageDigest md = MessageDigest.getInstance("MD5");
md.update(pwd.getBytes());
String hashedPwd = new BigInteger(1, md.digest()).toString(16);
return hashedPwd;
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
return null;
}
php
https://blog.csdn.net/m0_47719288/article/details/114373218
|