【问题标题】:Signing hashed payload using HMAC for get request not working使用 HMAC 为 get 请求签名散列有效负载不起作用
【发布时间】: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


【解决方案1】:

回答我自己的问题。

又一例冒名顶替综合症哈哈。问题出在网站的API上,代码没有问题..

【讨论】:

    猜你喜欢
    • 2022-06-19
    • 1970-01-01
    • 1970-01-01
    • 2023-03-22
    • 1970-01-01
    • 2017-02-22
    • 2021-04-17
    • 1970-01-01
    • 2019-08-18
    相关资源
    最近更新 更多