【问题标题】:base64 HMAC with SHA256 in PythonPython中带有SHA256的base64 HMAC
【发布时间】:2020-08-29 12:21:54
【问题描述】:

我很难创建签名。

我需要使用 HMAC 和 SHA256 使用 Checkout Request JSON 和密钥进行签名。我需要连接签名、管道字符 (|) 和 Checkout Request JSON,然后使用 BASE64 对其进行编码。

这是我在文档中找到的公式:

$signed_checkout_request = base64( hmac_sha256( $checkout_request, $private_key ) + "|" + $checkout_request )

我是根据一些在线代码制作的:

    import hashlib
    import hmac
    import base64

    checkout_request = '{"charge":{"amount":499,"currency":"EUR"}}'.encode('utf-8');
    private_key = b'44444444444';
    digest = hmac.new(private_key, msg=checkout_request, digestmod=hashlib.sha256).digest()

    signature = base64.b64encode(digest).decode()

但是我不确定如何获得“|”进去。老实说,我也不确定我是否走在正确的轨道上……我在这部分没有太多经验,而且我在谷歌搜索上也失败了。

【问题讨论】:

    标签: python php base64 sha256 hmac


    【解决方案1】:
    private_key = 'blahblahblah'
    
    checkout_request = json.dumps({"charge":{"amount":4999,"currency":"EUR"}}, sort_keys=True, separators=(",", ":"))
    
    digest = hmac.new(private_key.encode(), msg=checkout_request.encode(), digestmod=hashlib.sha256,).hexdigest()
    
    signature = base64.b64encode((digest + "|" + checkout_request).encode()).decode()
    

    我能够让它与它一起工作:)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-10-19
      • 1970-01-01
      • 2020-10-18
      • 1970-01-01
      • 1970-01-01
      • 2021-07-10
      • 1970-01-01
      相关资源
      最近更新 更多