如何在 java 中使用 hmacutils 生成 HMAC SHA 256

How to generate HMAC SHA 256 using hmacutils in java

我一直在尝试使用如下代码为 API 生成 HMAC:

public static void main(String[] args) {

    byte[] hmacSha256 = HmacUtils.hmacSha256(API_SECRET, "totalParams");

    System.out.println((Base64.getEncoder().encodeToString(hmacSha256)));
}

但是当我使用在 API 调用中获得的字符串时,我收到错误消息:

{"code":-1100,"msg":"Illegal characters found in parameter 'signature'; legal range is '^[A-Fa-f0-9]{64}$'."}

我以为这意味着我必须转换为十六进制,但十六进制也不起作用。

我不关心实现,我只想要一个有效的签名。任何人都知道如何以任何方式生成有效签名?

参见 to a similar question, and then this answer 将您的 byte[] 转换为十六进制而不是使用 Base64。

(简短版本:你有 256 位哈希,API 需要 64 个字符。Base64 给你 44(左右),但十六进制应该给你 64)