使用MD5的API签名具有as sha256的密钥

我试图使用Python访问coinnest.co.kr(一个加密货币交易所)的交易API。要做到这一点,我必须按照这个网址的文档:https://www.coinnest.co.kr/doc/private.html使用MD5的API签名具有as sha256的密钥

我们得到一个密钥对公钥:ASDF-ASDF-ASDF-ASDF和私钥:QWER-qewr-QWER-QWER。

请求参数为:

"key":"asdf-asdf-asdf-asdf", 

"nonce":1505209177,

"coin":"btc",

"id":3

然后要签名的字符串将是:

key=asdf-asdf-asdf-asdf&nonce=1505209278&coin=btc&id=3 

现在我们使用QWER-qewr的MD5哈希-qwer-qwer作为密钥,并通过sha256加密上面的字符串,我们得到66b2935f3ba82a4a17074d439adab1043a63df4 a177af68fe76a3f4f350ef55d,这将用作签名。

我目前的问题是,我无法得到与例子相同的结果。我不确定他们的例子是否准确。私钥是“qwer-qewr-qwer-qwer”还是“qwer-qwer-qwer-qwer”。现时是“1505209177”还是“1505209278”?

#!/usr/bin/python2.7 

import hashlib

import hmac

secret = 'qwer-qewr-qwer-qwer'

message = 'key=asdf-asdf-asdf-asdf&nonce=1505209278&coin=btc&id=3'

key = hashlib.md5(secret).hexdigest()

print hmac.new(key, message, hashlib.sha256).hexdigest()

使用上面的代码中,我获得也许你应该蛮力API文档的"afdfb1c331670d95c93868948ff769719b28d879ac94589fa44c4d5b8eacab04"对比的 "66b2935f3ba82a4a17074d439adab1043a63df4a177af68fe76a3f4f350ef55d"

回答:

预期结果的签名?

>>> secret1 = 'qwer-qewr-qwer-qwer' 

>>> secret2 = 'qwer-qwer-qwer-qwer'

>>> message_template = 'key=asdf-asdf-asdf-asdf&nonce={}&coin=btc&id=3'

>>> target = '66b2935f3ba82a4a17074d439adab1043a63df4a177af68fe76a3f4f350ef55d'

>>> keys = [hashlib.md5(secret1).hexdigest(), hashlib.md5(secret1).digest(), hashlib.md5(secret2).hexdigest(), hashlib.md5(secret2).digest()]

>>>

>>> for i in range(1505000000, 1506000000):

... msg = message_template.format(i)

... for key in keys:

... if hmac.new(key, msg, hashlib.sha256).hexdigest() == target:

... print 'FOUND hmac', key, msg

... if hashlib.sha256(key + msg).hexdigest() == target:

... print 'FOUND sha256', key, msg

...

FOUND hmac fecfe400baa3ae47fe8c42f9c087ec90 key=asdf-asdf-asdf-asdf&nonce=1505209413&coin=btc&id=3

对应于:

>>> keys.index('fecfe400baa3ae47fe8c42f9c087ec90') 

0

所以下面应该工作:

>>> hmac.new(hashlib.md5('qwer-qewr-qwer-qwer').hexdigest(), 'key=asdf-asdf-asdf-asdf&nonce=1505209413&coin=btc&id=3', hashlib.sha256).hexdigest() 

'66b2935f3ba82a4a17074d439adab1043a63df4a177af68fe76a3f4f350ef55d'

看起来你正在做正确的事情,但他们的随机数发生变化,而qwer-qewr-qwer-qwer私钥是正确的。

以上是 使用MD5的API签名具有as sha256的密钥 的全部内容, 来源链接: utcz.com/qa/260723.html

回到顶部