生成HMAC SHA256签名Python

时间:2018-12-24 08:14:01

标签: python python-3.x hmac

尝试为3Commas生成HMAC SHA256签名,我使用了official example中的相同参数,它应该生成: “ 30f678a157230290e00475cfffccbc92ae3659d94c145a2c0e9d0fa28f41c11a”

但是我生成: “ 17a656c7df48fa2db615bfc719627fc94e59265e6af18cc7714694ea5b58a11a”

这是我尝试过的:

secretkey = 'NhqPtmdSJYdKjVHjA7PZj4Mge3R5YNiP1e3UZjInClVN65XAbvqqM6A7H5fATj0j'
totalParams = '/public/api/ver1/accounts/new?type=binance&name=binance_account&api_key=XXXXXX&secret=YYYYYY'
print 'signature = '+hashlib.sha256((secretkey+totalParams).encode('ASCII')).hexdigest()

有人可以帮我吗?

2 个答案:

答案 0 :(得分:2)

尝试使用hmac模块而不是hashlib模块:

import hmac
import hashlib
secret_key = b"NhqPtmdSJYdKjVHjA7PZj4Mge3R5YNiP1e3UZjInClVN65XAbvqqM6A7H5fATj0j"
total_params = b"/public/api/ver1/accounts/new?type=binance&name=binance_account&api_key=XXXXXX&secret=YYYYYY"
signature = hmac.new(secret_key, total_params, hashlib.sha256).hexdigest()
print("signature = {0}".format(signature))

这给出了预期的结果:

signature = 30f678a157230290e00475cfffccbc92ae3659d94c145a2c0e9d0fa28f41c11a

答案 1 :(得分:0)

几年前,我确实使用另一种方法来实现它。

import hmac
import hashlib 
import binascii

def create_sha256_signature(key, message):
    byte_key = binascii.unhexlify(key)
    message = message.encode()
    return hmac.new(byte_key, message, hashlib.sha256).hexdigest().upper()

create_sha256_signature("E49756B4C8FAB4E48222A3E7F3B97CC3", "TEST STRING")

https://www.pyscoop.com/generate-hmac-sha256-signature-in-python/