【问题标题】:www.crypto.com authenticating, python HMAC-SHA256www.crypto.com 身份验证,python HMAC-SHA256
【发布时间】:2020-11-02 16:41:42
【问题描述】:

尝试向 crypto.com 进行身份验证,但似乎无法使其正常工作......现在已经尝试了几天并且非常沮丧,有什么帮助吗?他们的 api 文档@https://exchange-docs.crypto.com/?python#digital-signature

这是怎么做 + 示例代码,我卡住了..


身份验证基于 API 密钥的配对,以及使用 API 密钥作为加密密钥的请求参数的 HMAC-SHA256 哈希。

生成HMAC-SHA256签名的算法如下:

如果请求中存在“params”,则按升序对请求参数键进行排序。

将所有有序参数键组合为键+值(无空格,无分隔符)。我们称之为参数字符串

接下来,执行以下操作:方法 + id + api_key + 参数字符串 + nonce

使用 HMAC-SHA256 对上述内容进行哈希处理,使用 API Secret 作为加密密钥

将输出编码为十六进制字符串——这是您的数字签名

import hmac
import hashlib
import json
import requests
import time

API_KEY = "API_KEY"
SECRET_KEY = "SECRET_KEY"

req = {
  "id": 11,
  "method": "private/get-order-detail",
  "api_key": API_KEY,
  "params": {
    "order_id": "337843775021233500",
  },
  "nonce": int(time.time() * 1000)
};

# First ensure the params are alphabetically sorted by key
paramString = ""

if "params" in req:
  for key in req['params']:
    paramString += key
    paramString += str(req['params'][key])

sigPayload = req['method'] + str(req['id']) + req['api_key'] + paramString + str(req['nonce'])

request['sig'] = hmac.new(
  bytes(str(SECRET_KEY), 'utf-8'),
  msg=bytes(sigPayload, 'utf-8'),
  digestmod=hashlib.sha256
).hexdigest()

【问题讨论】:

    标签: api authentication sha256 hmac crypto.com-exchange-api


    【解决方案1】:

    我今天遇到了同样的问题。总的来说,我发现 crypto.com 的 API 文档很差。

    更改代码的最后一位,以便将字段添加到“req”字典:

    req['sig'] = hmac.new(
      bytes(str(SECRET_KEY), 'utf-8'),
      msg=bytes(sigPayload, 'utf-8'),
      digestmod=hashlib.sha256
    ).hexdigest()
    

    要获取您的订单详细信息(如您的示例中所写),您可以使用 POST 请求进行 API 调用,如下所示:

    api_url = f"https://api.crypto.com/v2/{req["method"]}"
    response = requests.post(api_url, json=req)
    order_detail = response.json()
    
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-05-28
      • 1970-01-01
      • 2017-11-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-27
      相关资源
      最近更新 更多