SignUtil.java 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. package com.webchat.common.util;
  2. import javax.crypto.Mac;
  3. import javax.crypto.spec.SecretKeySpec;
  4. import java.nio.charset.StandardCharsets;
  5. import java.util.Base64;
  6. public class SignUtil {
  7. /**
  8. * 签名生成(华为云规范)
  9. *
  10. * @param sk
  11. * @param params
  12. * @return
  13. */
  14. public static String generateSignature(String sk, String ... params) {
  15. try {
  16. StringBuffer sign = new StringBuffer();
  17. if (params != null && params.length > 0) {
  18. for (int i = 0; i < params.length; i++) {
  19. sign.append(params[i]);
  20. if (i != params.length - 1) {
  21. sign.append("-");
  22. }
  23. }
  24. }
  25. Mac sha256HMAC = Mac.getInstance("HmacSHA256");
  26. SecretKeySpec secretKey = new SecretKeySpec(sk.getBytes(), "HmacSHA256");
  27. sha256HMAC.init(secretKey);
  28. byte[] hashBytes = sha256HMAC.doFinal(sign.toString().getBytes(StandardCharsets.UTF_8));
  29. return Base64.getEncoder().encodeToString(hashBytes);
  30. } catch (Exception e) {
  31. throw new RuntimeException("签名生成失败", e);
  32. }
  33. }
  34. }