Не могу найти проблему, почему ключи подписи разные. Я думаю, что это связано с python, он должен иметь байтов для ввода. Но вывод на обоих языках совершенно разный. Не уверен, что с ним не так.
API_SECRET = 'ErLN2dewKAfY5j4bHOIFQaCKogJIv8Tq'
php
$digest2 = [
'486',
'GET',
'/orderlist',
'2.0',
'2020-01-29T11:45:47+01:00'];
print_r(base64_encode(hash_hmac('sha512', implode('', $digest2), $this->_API_SECRET, true)));
Это даст код:
BsPgLClFDYl6oMRXkph7sz3opLeRAenzZ1w1X5fhiyDC4WVZViTvIWnLZWb1lQDVCRZ2/MkPT8irU9gax3m2Iw==
Но когда я пытался получить тот же код в python:
python
digest2 =['486','GET','/orderlist','2.0','2020-01-29T11:45:47+01:00']
#token = hmac.new(bytes('API_SECRET'.encode("utf-8")), msg=bytes(''.join(digest2 ).encode("utf-8")), digestmod=hashlib.sha512).hexdigest()
digest = hmac.new(bytes('API_SECRET'.encode("utf-8")), bytes(''.join(digest2 ),"utf-8"), digestmod=hashlib.sha512).hexdigest()
return base64.b64encode(digest.encode("utf-8"))
Это даст этот код:
b'YThhNGI0ZGZkN2Q5YmJmNDg5OTJmNzE1NGZiMWQyMWExYzQyODU3OGUxNmQ1ZTRkZWUxOGViZTUxNmFhM2M4MGZmZTYzMTJhNWNhYWQ5MDg3NDdlMGQ0NDBmMDliZThkNTA2ODA1YTlkMjJmZGMwZTk3NjVkNmM2MmE0NTViMjQ=