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

时间:2018-03-11 03:48:58

标签: java hmac sha

我一直在尝试使用如下代码为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} $'。“}

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

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

1 个答案:

答案 0 :(得分:1)

点击this answer查看类似问题,然后this answer将您的byte[]转换为十六进制,而不是使用Base64。

(简短版本:你有256位散列,API需要64个字符.Base64给你44(ish),但是hex应该给你64)