Api www.crypto.com身份验证,python HMAC-SHA256

Api www.crypto.com身份验证,python HMAC-SHA256,api,authentication,sha256,hmac,crypto.com-exchange-api,Api,Authentication,Sha256,Hmac,Crypto.com Exchange Api,正在尝试向crypto.com进行身份验证,但似乎无法使其正常工作。。。几天来我一直在努力,但很沮丧,有什么帮助吗?他们的api文档@ 下面是如何做到这一点+示例代码,我卡住了 身份验证基于API密钥的配对,以及使用API密钥作为加密密钥的请求参数的HMAC-SHA256哈希 生成HMAC-SHA256签名的算法如下: 如果请求中存在“params”,请按升序对请求参数键进行排序 将所有有序参数键组合为键+值(无空格,无分隔符)。让我们称之为参数字符串 接下来,执行以下操作:方法+id+api

正在尝试向crypto.com进行身份验证,但似乎无法使其正常工作。。。几天来我一直在努力,但很沮丧,有什么帮助吗?他们的api文档@

下面是如何做到这一点+示例代码,我卡住了


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

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

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

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

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

使用HMAC-SHA256以API密钥作为加密密钥对上述内容进行散列

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

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()

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

更改代码的最后一位,以便在“req”字串中添加一个字段:

req['sig']=hmac.new(
字节(str(密钥),“utf-8”),
msg=字节(sigPayload,'utf-8'),
digestmod=hashlib.sha256
).hexdigest()
要获取订单详细信息(如示例中所述),您可以使用POST请求调用API,如下所示:

api\u url=f”https://api.crypto.com/v2/{req[“方法”]}
response=requests.post(api_url,json=req)
order_detail=response.json()