如何用Python签署HMAC-SHA512?

时间:2017-12-23 15:17:17

标签: python python-3.x api sign sha

我想以下列格式提出请求:

https://bittrex.com/api/v1.1/account/getbalance?apikey=API_KEY&currency=BTC

我确实拥有公钥和密钥。但是我发现了以下声明:

  

对于此版本,我们使用标准HMAC-SHA512签名。将apikey和nonce附加到您的请求并计算HMAC哈希并将其包含在apisign标题下

我真的不知道如何正确加密我的密钥。使用普通密钥显然会返回" NONCE_NOT_PROVIDED"。我得到的一切都是这样的:

current_price = requests.get("https://bittrex.com/api/v1.1/account/getbalance?apikey=API_KEY&currency=BTC")

如何正确签名和加密密钥?谢谢。

编辑:

目前的尝试如下所示。

def getWalletSize():
    APIkey = b'29i52wp4'
    secret = b'10k84a9e'
    s = "https://bittrex.com/api/v1.1/account/getbalance?apikey=29i52wp4&currency=BTC"
    digest = hmac.new(secret, msg=s, digestmod=hashlib.sha512).digest()
    current_balance = requests.get(digest)
    return current_balance

然而,它引发了错误Unicode-objects must be encoded before hashing

1 个答案:

答案 0 :(得分:3)

import hmac
import hashlib
import base64

API_KEY = 'public_key'
s = """GET https://bittrex.com/api/v1.1/account/getbalance?apikey=%s&currency=BTC""" % API_KEY

base64.b64encode(hmac.new("1234567890", msg=s, digestmod=hashlib.sha512).digest())

签署请求

digest = hmac.new(secret_key, msg=thing_to_hash, digestmod=hashlib.sha512).digest()

并将其编码为base64

base64.b64encode(digest)