public class SignatureTest { private String HMAC_SHA1_ALGORITHM = "HmacSHA1"; public static void main(String args[]) throws Exception { String secret = "secret"; String HTTP_METHOD = "GET" + "\n"; String contentMD5 = String.format("%s", "") + "\n"; String contentType = String.format("%s", "text/xml") + "\n"; String date = String.format("%s", getTimeStamp()) + "\n"; String canonicalizedMNSHeaders = String.format("x-mns-version:%s", "2015-06-06") + "\n"; String canonicalizedResource = "/queues/robot-command-creation"; String stringToSign = HTTP_METHOD + contentMD5 + contentType + date + canonicalizedMNSHeaders + canonicalizedResource; System.out.println(stringToSign); SignatureTest signatureTest = new SignatureTest(); String signature = signatureTest.calculateRFC2104HMAC(stringToSign, secret); System.out.println(s); } public String calculateRFC2104HMAC(String data, String key) throws java.security.SignatureException { String result; try { SecretKeySpec signingKey = new SecretKeySpec(key.getBytes(), HMAC_SHA1_ALGORITHM); Mac mac = Mac.getInstance(HMAC_SHA1_ALGORITHM); mac.init(signingKey); byte[] rawHmac = mac.doFinal(data.getBytes()); result = com.sun.org.apache.xerces.internal.impl.dv.util.Base64.encode(rawHmac); } catch (Exception e) { throw new SignatureException("Failed to generate HMAC : " + e.getMessage()); } return result; } public static String getTimeStamp() { SimpleDateFormat format = new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss 'GMT'", Locale.US); Calendar instance = Calendar.getInstance(TimeZone.getTimeZone("GMT+0")); format.setCalendar(instance); return format.format(new Date()); } }
阿里云 消息服务中 获取签名方法
最新推荐文章于 2022-07-07 19:36:21 发布