如何在 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)
我一直在尝试使用如下代码为 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}$'."}
我以为这意味着我必须转换为十六进制,但十六进制也不起作用。
我不关心实现,我只想要一个有效的签名。任何人都知道如何以任何方式生成有效签名?
参见 byte[]
转换为十六进制而不是使用 Base64。
(简短版本:你有 256 位哈希,API 需要 64 个字符。Base64 给你 44(左右),但十六进制应该给你 64)