gpt4 book ai didi

java - 使用 GitHub 生成的 HMAC 十六进制摘要与 Java 提供的摘要不匹配

转载 作者:行者123 更新时间:2023-11-30 07:58:05 25 4
gpt4 key购买 nike

这是在 Java 端使用的代码

private String encodedHexString(String secretKey, String payload)
throws NoSuchAlgorithmException, InvalidKeyException {

SecretKeySpec keySpec = new SecretKeySpec(secretKey.getBytes(),"HmacSHA1");
Mac mac = Mac.getInstance("HmacSHA1");
mac.init(keySpec);

byte[] payloadDigest = mac.doFinal(payload.getBytes());
String encodedDigest = DatatypeConverter.printHexBinary(payloadDigest);
return encodedDigest;
}

其中 secretKey 是在 GitHub 端以及我端输入的 secret token ,有效负载是我在 request.getParameter("payload") 中获得的内容对于 application/x-www-form-urlencoded 内容类型

不幸的是,即使在 Java 端附加 "sha1=" 后,将其与 request.getHeader("X-Hub-Signature") 匹配也不匹配.

最佳答案

我成功地简单地编码了整个请求正文,没有任何类型的参数解析、转义等:

String secret = "73fcce1ecaeeb4136f27854eaaacb785929bb9a3";
String payload = "payload=%7B%22zen%22%3A%22It%27s+not+fully+shipped+until+it%27s+fast.%22%2C%22hook_id%2...";
System.out.println(encodedHexString(secret, payload));

结果是:

0F026F9E5107F4BF377CA032C1431BFED687B6E9

这与 X-Hub-Signature header 非常匹配:

X-Hub-Signature: sha1=0f026f9e5107f4bf377ca032c1431bfed687b6e9

关于java - 使用 GitHub 生成的 HMAC 十六进制摘要与 Java 提供的摘要不匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32376456/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com