Matlab Kraken Аутентифицированный API Неверная подпись

Я тоже, как и многие другие, испытываю трудности с подключением Matlab к Kraken из незаконных источников, и четкого ответа пока не существует. Надеюсь, кто-то может объяснить, что может быть ошибкой типа, которая приводит к ошибке «EAPI: неверная подпись» простыми словами, пожалуйста. (Я не Java-программист.)

uri='0/private/Balance';
postdata= '';
[response, status] = krakenAuthenticated(uri, postdata);

function [response,status]=krakenAuthenticated(uri,postdata)

  url=['https://api.kraken.com/',uri];

  % nonce
  nonce  = num2str(floor((now-datenum('1970', 'yyyy'))*8640000000));
  key    = ''; % Public key
  secret = ''; % Private key

  % 1st hash
  Opt.Method = 'SHA-256';
  Opt.Input  = 'ascii';
  sha256string = DataHash(['nonce=',nonce,postdata],Opt);

  % 2nd hash
  sign = crypto([uri, sha256string], matlab.net.base64decode(secret), 'HmacSHA512');

  header_1=http_createHeader('API-Key',key);
  header_2=http_createHeader('API-Sign',char(sign));
  header=[header_1 header_2];
  [response,status] = urlread2(url,'POST',['nonce=',nonce,postdata],header);

end

function header = http_createHeader(name,value)
    header = struct('name',name,'value',value);
end

function signStr = crypto(str, key, algorithm)

    import java.net.*;
    import javax.crypto.*;
    import javax.crypto.spec.*;
    import org.apache.commons.codec.binary.*

    keyStr = java.lang.String(key);
    key = SecretKeySpec(keyStr.getBytes('UTF-8'), algorithm);
    mac = Mac.getInstance(algorithm);
    mac.init(key);
    toSignStr = java.lang.String(str);
    signStr = java.lang.String(Hex.encodeHex( mac.doFinal( toSignStr.getBytes('UTF-8'))));

end

person bondtrade    schedule 22.01.2018    source источник
comment
Коду не хватает воспроизводимости. keySecret не определено.   -  person Tommaso Belluzzo    schedule 23.01.2018
comment
Спасибо, Томмазо. Это просто открытый и закрытый ключи (строки), выданные поставщиком API.   -  person bondtrade    schedule 23.01.2018
comment
Попробуйте заменить sha256string = DataHash(['nonce=',nonce,postdata],Opt); на sha256string = DataHash([nonce,'nonce=',nonce],Opt);.   -  person Tommaso Belluzzo    schedule 23.01.2018
comment
Спасибо, Томмазо. К сожалению, все еще получаю ту же ошибку Invalid Signature.   -  person bondtrade    schedule 23.01.2018
comment
Это сообщение: stackoverflow.com/ questions/35999997/ предполагает, что здесь проблема: key = SecretKeySpec(keyStr.getBytes('UTF-8'), алгоритм); но четкого решения не было предоставлено.   -  person bondtrade    schedule 23.01.2018