我一直在尝试使用如下代码为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”:“在参数中找到非法字符 '签名';合法范围是'^ [A-Fa-f0-9] {64} $'。“}
我认为这意味着我必须转换为十六进制,但十六进制也不起作用。
我不关心实现,我只想要一个有效的签名。任何人都知道如何以任何方式生成有效签名?
答案 0 :(得分:1)
点击this answer查看类似问题,然后this answer将您的byte[]
转换为十六进制,而不是使用Base64。
(简短版本:你有256位散列,API需要64个字符.Base64给你44(ish),但是hex应该给你64)