【发布时间】:2021-01-18 17:06:10
【问题描述】:
所以我必须使用这个 API 来工作。这是我需要来自以下数据的网站的要求:
"Payload 需要使用您的 API 密钥使用 sha256 算法进行 HMAC 加密,摘要需要以十六进制表示(不是原始二进制输出)
示例: 摘要 = hmac_hash_sha256(有效负载,secret_key); "
这是我的功能之一:
def get_headers():
timestamp = time()
public_key = ''
secret_key = b''
payload = f'{timestamp}|{public_key}'
digest = hmac.new(secret_key, msg=payload.encode(), digestmod='sha256').hexdigest()
headers_dict = {"x-stamp": f"{timestamp}",
'x-token': f'{public_key}',
'x-signature': f'{digest}'}
return headers_dict
时间戳和公钥有效并被网站接受。错误在于签名。 (有效载荷是网站所需的格式。)
【问题讨论】:
-
如果没有更多关于他们想要什么的细节,真的很难说。但是(1)你确定你签署了正确的有效载荷吗? (2) 你确定有效载荷和签名使用了正确的大小写吗?
-
@kichik 有效载荷应该是时间戳和公钥连接。然后应该由 secret_key 进行散列和签名。这就是 hmac.new() 对象。
标签: python python-3.x python-requests