1.鉴权算法,我的userId:459810,appkey:3BeJti9supdvX4K+n/98Osx7Zmadd4ze9qR+EfXAfoQWiMXvqksrU0VDUZa7tDUQ Java代码示例 import javax.crypto.Mac; import javax.crypto.spec.SecretKeySpec; import java.io.UnsupportedEncodingException; import java.net.URLEncoder; import java.security.InvalidKeyException; import java.security.NoSuchAlgorithmException; import java.util.Base64; public class Token { public static String assembleToken(String version, String resourceName, String expirationTime, String signatureMethod, String accessKey) throws UnsupportedEncodingException, NoSuchAlgorithmException, InvalidKeyException { StringBuilder sb = new StringBuilder(); String res = URLEncoder.encode(resourceName, "UTF-8"); String sig = URLEncoder.encode(generatorSignature(version, resourceName, expirationTime, accessKey, signatureMethod), "UTF-8"); sb.append("version=") .append(version) .append("&res=") .append(res) .append("&et=") .append(expirationTime) .append("&method=") .append(signatureMethod) .append("&sign=") .append(sig); return sb.toString(); } public static String generatorSignature(String version, String resourceName, String expirationTime, String accessKey, String signatureMethod) throws NoSuchAlgorithmException, InvalidKeyException { String encryptText = expirationTime + "\n" + signatureMethod + "\n" + resourceName + "\n" + version; String signature; byte[] bytes = HmacEncrypt(encryptText, accessKey, signatureMethod); signature = Base64.getEncoder().encodeToString(bytes); return signature; } public static byte[] HmacEncrypt(String data, String key, String signatureMethod) throws NoSuchAlgorithmException, InvalidKeyException { //根据给定的字节数组构造一个密钥,第二参数指定一个密钥算法的名称 SecretKeySpec signinKey = null; signinKey = new SecretKeySpec(Base64.getDecoder().decode(key), "Hmac" + signatureMethod.toUpperCase()); //生成一个指定 Mac 算法 的 Mac 对象 Mac mac = null; mac = Mac.getInstance("Hmac" + signatureMethod.toUpperCase()); //用给定密钥初始化 Mac 对象 mac.init(signinKey); //完成 Mac 操作 return mac.doFinal(data.getBytes()); } public enum SignatureMethod { SHA1, MD5, SHA256; } public static void main(String[] args) throws UnsupportedEncodingException, NoSuchAlgorithmException, InvalidKeyException { String version = "2022-05-01"; String resourceName = "userid/12321"; //用户自定义token过期时间 String expirationTime = System.currentTimeMillis() / 1000 + 3600 + ""; String signatureMethod = SignatureMethod.SHA1.name().toLowerCase(); String accessKey = "KuF3NT/jUBJ62LNBB/A8XZA9CqS3Cu79B/ABmfA1UCw="; String token = assembleToken(version, resourceName, expirationTime, signatureMethod, accessKey); System.out.println("Authorization:" + token); } }