Моя подпись отключена, потому что я использую printHexBinary вместо encodeHexString? - PullRequest
0 голосов
/ 15 января 2019

В документации API используется Hex.encodeHexString (), но в этом коде я использую DatatypeConverter.printHexBinary (), поскольку у меня нет Apache.

    String strForSign = "/v1/account/balance" + "/" + nonce + "/";
    String signatureStr = Base64.getEncoder().encodeToString(strForSign.getBytes("UTF-8"));

    Mac sha256_HMAC = Mac.getInstance("HmacSHA256");
    SecretKeySpec secretKeySpec = new SecretKeySpec(secretKey.getBytes("UTF-8"), "HmacSHA256");
    sha256_HMAC.init(secretKeySpec);

    String signatureResult = DatatypeConverter.printHexBinary(sha256_HMAC.doFinal(signatureStr.getBytes("UTF-8")));

Команда curl, которая использует эту подпись:

String command = "curl -H \"KC-API-KEY: " + apiKey + "\" -H \"KC-API-NONCE: " + nonce + "\" -H \"KC-API-SIGNATURE: " + signature + 
        "\" -X GET \"https://api.kucoin.com/v1/account/balance/\"";

Я должен получить баланс, но я продолжаю получать

{"code":"UNAUTH","msg":"Signature verification failed","success":false,"timestamp":1547545347146}

Это связано с тем, что Hex.encodeHexString () и DatatypeConverter.printHexBinary () выдают здесь разные выходные данные или по какой-то другой причине?

...