我在将Coinbase订单的消息签名到API时遇到问题。
在Coinbase(https://docs.pro.coinbase.com/#signing-a-message)的官方文档中,您可以阅读如何签名。
我在这里找到了一个非官方的Java代码; https://github.com/irufus/gdax-java/blob/master/src/main/java/com/coinbase/exchange/api/constants/GdaxConstants.java。基于此,我得出了以下代码:
String prehash = timestamp + method.toUpperCase() + requestPath + body;
byte[] secretDecoded = Base64.getDecoder().decode(secretKey);
Mac SHARED_MAC = Mac.getInstance("HmacSHA256");
SecretKeySpec keyspec = new SecretKeySpec(secretDecoded, SHARED_MAC.getAlgorithm());
Mac sha256 = (Mac) SHARED_MAC.clone();
sha256.init(keyspec);
return Base64.getEncoder().encodeToString(sha256.doFinal(prehash.getBytes()));
当我发布上述结果时,我从api返回了“无效签名”响应。这是怎么了? ?