HMAC256Uitil.java 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. package com.ydtech.utils;
  2. import sun.misc.BASE64Encoder;
  3. import javax.crypto.Mac;
  4. import javax.crypto.spec.SecretKeySpec;
  5. import java.io.UnsupportedEncodingException;
  6. import java.security.InvalidKeyException;
  7. import java.security.NoSuchAlgorithmException;
  8. public class HMAC256Uitil {
  9. //hmac256
  10. public static String hmac256(String data, String key) {
  11. StringBuilder sb = new StringBuilder();
  12. byte[] bytes = null;
  13. String encode = null;
  14. try {
  15. Mac hmacSHA256 = Mac.getInstance("HMACSHA256");
  16. try {
  17. SecretKeySpec hmacSHA2561 = new SecretKeySpec(key.getBytes("utf-8"), "HMACSHA256");
  18. try {
  19. hmacSHA256.init(hmacSHA2561);
  20. bytes = hmacSHA256.doFinal(data.getBytes("utf-8"));
  21. } catch (InvalidKeyException e) {
  22. e.printStackTrace();
  23. }
  24. } catch (UnsupportedEncodingException e) {
  25. e.printStackTrace();
  26. }
  27. BASE64Encoder base64Encoder = new BASE64Encoder();
  28. // byte[] bytes = data.getBytes("utf-8");
  29. encode = base64Encoder.encode(bytes);
  30. System.out.println("加密后--" + encode);
  31. } catch (Exception e) {
  32. e.printStackTrace();
  33. }
  34. return encode;
  35. }
  36. public static void main(String[] args) {
  37. hmac256("<cityCode>140400</cityCode><cityName>长治市</cityName><frameNo>LVVDA11B7AD256799</frameNo><licenseNo>晋DW0716</licenseNo><engineNo>NAAG02917</engineNo><enrollDate>2010-08-23</enrollDate><modelName>奇瑞SQR7150A130轿车</modelName><modelCode/><newVehicle/><extendInfo/>", "123456test");
  38. String xmlString = "<RequestData><requestHead><seqNo>1d6ff938-ada5-4f39-9fc1-e</seqNo><consumerID>102120</consumerID><consumerAccessKey>123456test</consumerAccessKey><transCode>C1</transCode><transTime>2022-07-12 18:00:00</transTime></requestHead><requestBody><cityCode>140400</cityCode><cityName>长治市</cityName><frameNo>LVVDA11B7AD256799</frameNo><licenseNo>晋DW0716</licenseNo><engineNo>NAAG02917</engineNo><enrollDate>2010-08-23</enrollDate><modelName>奇瑞SQR7150A130轿车</modelName><modelCode/><newVehicle/><extendInfo/></requestBody></RequestData>";
  39. xmlString = xmlString.substring(xmlString.lastIndexOf("<requestBody>") + 13, xmlString.lastIndexOf("</requestBody>"));
  40. String consumerAccessKey = hmac256(xmlString, "123456test");
  41. System.out.println("consumerAccessKey--" + consumerAccessKey);
  42. }
  43. }