12345678910111213141516171819202122232425262728293031323334353637 |
- package com.webchat.common.util;
- import javax.crypto.Mac;
- import javax.crypto.spec.SecretKeySpec;
- import java.nio.charset.StandardCharsets;
- import java.util.Base64;
- public class SignUtil {
- /**
- * 签名生成(华为云规范)
- *
- * @param sk
- * @param params
- * @return
- */
- public static String generateSignature(String sk, String ... params) {
- try {
- StringBuffer sign = new StringBuffer();
- if (params != null && params.length > 0) {
- for (int i = 0; i < params.length; i++) {
- sign.append(params[i]);
- if (i != params.length - 1) {
- sign.append("-");
- }
- }
- }
- Mac sha256HMAC = Mac.getInstance("HmacSHA256");
- SecretKeySpec secretKey = new SecretKeySpec(sk.getBytes(), "HmacSHA256");
- sha256HMAC.init(secretKey);
- byte[] hashBytes = sha256HMAC.doFinal(sign.toString().getBytes(StandardCharsets.UTF_8));
- return Base64.getEncoder().encodeToString(hashBytes);
- } catch (Exception e) {
- throw new RuntimeException("签名生成失败", e);
- }
- }
- }
|