Fouten met ongeldige handtekening treden op als uw API-sleutel of API-geheim onjuist is geschreven in uw programma, of omdat de POST-gegevens die bij de authenticatie zijn gebruikt en de POST-gegevens die naar de API zijn verzonden, niet overeenkomen.Ter aanvullende referentie is het volgende een voorbeeld van Python-code om het API-handtekeningalgoritme te implementeren. De juiste openbare API-sleutel moet worden gekopieerd en geplakt vanuit accountbeheer, en de API-methode en POST-gegevens moeten dienovereenkomstig worden bijgewerkt. De uitvoerwaarde kan direct worden gebruikt als de waarde voor de API-Sign HTTP-header. #!/usr/bin/env python
# Import required Python libraries
import time
import base64
import hashlib
import hmac
# Decode API private key from base64 format displayed in account management
api_secret = base64.b64decode("nmlrD83t1J+yVWKUBx9vD6j26C5zhC11tFfXpN+Ww+8oOVuGgse5AeADcvl95jYaD+UAi3D5CrVfFr8GfQ7zhA==")
# Variables (API method, nonce, and POST data)
api_path = "/0/private/TradeBalance"
api_nonce = str(int(time.time()*1000))
api_post = "nonce=" + api_nonce + "&asset=xxbt"
# Cryptographic hash algorithms
api_sha256 = hashlib.sha256(api_nonce + api_post).digest()
api_hmac = hmac.new(api_secret, api_path + api_sha256, hashlib.sha512)
# Encode signature into base64 format used in API-Sign value
api_signature = base64.b64encode(api_hmac.digest())
# API authentication signature for use in API-Sign HTTP header
print(api_signature)De SHA256 wordt berekend met behulp van de nonce-waarde zelf en de POST-gegevens voor de API-methode, en de POST-GEGEVENS bestaan uit de naam/waarde-paren voor de nonce (opnieuw) en de API-methode-parameters. Een voorbeeld van de gegevens die aan de SHA256 moeten worden doorgegeven voor de TradeBalance-methode zou als volgt zijn:SHA256 = SHA256 van "1541933977000nonce=1541933977000&asset=xxbt"De tekenreekswaarde die aan de SHA256 wordt doorgegeven, mag geen extra null (\0) waarden bevatten en de tekenreekswaarde mag niet worden gecodeerd als base64 of hex (d.w.z. de tekenreekswaarde moet een platte tekstreeks zijn).Het URI-pad is de volledige URL van de API-methode, behalve het voorvoegsel "https://api.kraken.com", dus het URI-pad van de TradeBalance-methode (bijvoorbeeld) zou de tekenreekswaarde "/0/private/TradeBalance" zijn zonder extra null-waarden.De HMAC SHA512 wordt berekend met behulp van het URI-pad en de eerder berekende SHA256-digest, met de base64-gedecodeerde privé-API-sleutel als de HMAC-sleutel. Een voorbeeld van de gegevens die aan de HMAC moeten worden doorgegeven, zou als volgt zijn:HMAC SHA512 met behulp van base64 gedecodeerde privésleutel = HMAC van "/0/private/TradeBalanceSHA256"De API-Key en API-Sign HTTP-headers zijn de enige twee vereiste aangepaste HTTP-headers. De API-Key-header is een exacte kopie van de openbare API-sleutel uit accountbeheer. De API-Sign-header is de HMAC SHA512-digest gecodeerd met base64.