python - python 中的 hash_hmac sha512 身份验证

标签 python authentication httprequest private-key

我正在尝试为以下项目编写 python 身份验证机器人:https://comkort.com/page/private_api

没有完整的 php 示例。我猜有人可以把它放在这里。

只有一段php代码:

$query_string = http_build_query($_POST, '', '&');
$ethalon_sign = hash_hmac("sha512", $query_string, $api_secret_key);

如何用hash_hmac sha512在python上写认证?

我想提取我的未结订单 POST https://api.comkort.com/v1/private/order/list

我当前的变体是:

import hashlib
import hmac
import requests
import time

privateKey = b'myprivatekey'
publicKey = 'my public key'

url = 'https://api.comkort.com/v1/private/order/list'
tosign = b'market_alias=doge_ltc'
signing = hmac.new( privateKey , tosign, hashlib.sha512 )
headers = {'sign': signing.digest(), "apikey": publicKey, "nonce": int( time.time() ) }

r = requests.get(url, headers=headers)
print r.text

我发现了这个

{"code":401,"error":"Invalid sign","field":"sign"}

可能是 hexdigest() 而不是 digest()?我不知道,我在玩这个 b 前缀和不同的输出 hmac 选项,每次我都遇到一个错误:“无效符号”。

相关:HMAC signing requests in Python

最佳答案

如果有人感兴趣,我已经自己解决了。

#!/usr/bin/python

import hashlib
import hmac
import requests
import time

apikey = '';
apisecret = '';

def request_comkort( url, payload ):
        tosign = "&".join( [i + '=' + payload[i] for i in payload] )
        sign = hmac.new( apisecret, tosign , hashlib.sha512);
        headers = {'sign': sign.hexdigest(), 'nonce': int( time.time() ), 'apikey': apikey }
        r = requests.post(url, data=payload, headers=headers)
        return r.text

# Get balance
print request_comkort( "https://api.comkort.com/v1/private/user/balance";, {} )
# Get Open Orders 
print request_comkort( "https://api.comkort.com/v1/private/order/list";, {'market_alias': "DOGE_LTC" } )
# Make Ask
print request_comkort( "https://api.comkort.com/v1/private/order/sell";, { 'market_alias':"HTML_DOGE", "amount": "1000", "price": "123123" } )
# Cancel order
print request_comkort( "https://api.comkort.com/v1/private/order/cancel";, { 'order_id': 10943 } )

关于python - python 中的 hash_hmac sha512 身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24941718/

相关文章:

python - PiCamera 将图像存储在 RGBArray 中

python - 从外部脚本导入 Django 设置

无需重定向的 ASP.NET 表单例份验证

javascript - 在 Chrome 扩展程序中强制代理重新验证

java - 我的登录身份验证 Servlet 遇到问题

swift - for 循环始终显示 HTTP 请求后的最后一个数组值 swift 3

python - 检查python中是否存在json响应行

laravel - 无法在 laravel 中验证输入文件

android - VolleyPlus : NetworkDispatcher. 运行 : Unhandled exception java. lang.NullPointerException

python - 生成间隔之间的日期时间列表