package com.tianyi.sign; import lombok.SneakyThrows; import javax.crypto.Mac; import javax.crypto.spec.SecretKeySpec; import java.nio.charset.StandardCharsets; import java.util.Base64; public class Signature { /** * 获取签名 * * @param secretKey * @param data * @return */ @SneakyThrows public static String signWithHmacSha1(String secretKey, String data) { SecretKeySpec signingKey = new SecretKeySpec(secretKey.getBytes(), "HmacSHA1"); Mac mac = Mac.getInstance("HmacSHA1"); mac.init(signingKey); return Base64.getEncoder().encodeToString(mac.doFinal(data.getBytes(StandardCharsets.UTF_8))); } /** * 验证签名 * * @param secretKey * @param data * @param hmac * @return */ public static boolean verify(String secretKey, String data, String hmac) { String calculatedHmac = signWithHmacSha1(secretKey, data); return calculatedHmac.equals(hmac); } }