【问题标题】:Generate SHA256 HMAC signature in Python在 Python 中生成 SHA256 HMAC 签名
【发布时间】:2022-01-11 11:32:06
【问题描述】:

我正在尝试为 FTX websocket 生成 SHA256 HMAC 签名。我正在使用官方示例 https://docs.ftx.com/#private-channels 中的参数。

它应该生成 d10b5a67a1a941ae9463a60b285ae845cdeac1b11edc7da9977bef0228b96de9

但我得到了 ad38fa3566de972abb736bc0db2f7cd39daa48b14421e168422303bf2f03c6de

这是我尝试过的:

import hmac
import hashlib
import base64

time = '1557246346499'
secret = 'Y2QTHI23f23f23jfjas23f23To0RfUwX3H42fvN-'


digest = hmac.new(bytes(time, 'UTF-8'),
                bytes(secret, 'UTF-8'), hashlib.sha256)
signature = digest.hexdigest()
print(signature)

【问题讨论】:

    标签: python hmac


    【解决方案1】:

    我不熟悉这些东西,但你的代码与我在Python encoded message with HMAC-SHA256 中找到的代码不同,消息和密钥似乎被交换了。
    那只是重复的,但是另一件事是您链接的文档说

    sign:以下字符串的 SHA256 HMAC,使用您的 API 密码:<time>websocket_login

    所以你需要的不是1557246346499,而是1557246346499websocket_login

    放在一起:

    import hmac
    import hashlib
    
    time = '1557246346499websocket_login'
    secret = 'Y2QTHI23f23f23jfjas23f23To0RfUwX3H42fvN-'
    
    
    signature = hmac.new(bytes(secret , 'latin-1'), msg = bytes(time , 'latin-1'), digestmod = hashlib.sha256).hexdigest()
    print(signature)
    

    生成预期的输出。

    【讨论】:

      【解决方案2】:

      有两个错误:第一,hmac.new() 取反顺序的参数:hmac.new(secret, msg, digestmod),第二,消息应该是<time>websocket_login

      import hmac
      import hashlib
      
      time = '1557246346499'
      secret = 'Y2QTHI23f23f23jfjas23f23To0RfUwX3H42fvN-'
      
      
      digest = hmac.new(
          secret.encode(), 
          f'{time}websocket_login'.encode(),
          hashlib.sha256
      )
      signature = digest.hexdigest()
      print(signature)
      

      【讨论】:

      • 谢谢,超级有帮助..
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-25
      相关资源
      最近更新 更多