Эквивалентный хэш контента CryptoJS SHA512, закодированный для Python в шестнадцатеричном формате? - PullRequest
0 голосов
/ 12 февраля 2019

Я пытаюсь сделать аутентифицированный вызов API.Пример документации в JS гласит, что заголовок contentHash должен быть заполнен:

content = {currencySymbol:symbol};
var contentHash = CryptoJS.SHA512(JSON.stringify(content)).toString(CryptoJS.enc.Hex); 

Я пишу свой запрос на Python и продолжаю получать INVALID_CONTENT_HASH.Это то, что я до сих пор:

content = {"currencySymbol":"BTC"}
contentHash = hashlib.sha512(json.dumps(content, separators=(',',':')).encode('latin1')).hexdigest()

Hash: 18aa13a42b5efe3c45b37050626f23fcc4f3b4acf5e479f2f50212722cdcd80baa0ba6ddf8dcbd0f1b88008aaf9ec33874e4be9ab6ec2dece611c2dbdca87560

1008 * Ожидаемый Hash: e6e0b5e9941269e61fb41bd4f6a0dc5be0da1c011087a057ff88fe3de98f41c6681983dd14662c88b6293663d942c93511c3fd7f9cc5250e686b16de53a18f57 1010 * Я не знаю, что случилось с моей просьбой.Пожалуйста посоветуй.

1 Ответ

0 голосов
/ 12 февраля 2019

Ваша проблема в том, что json.dumps по умолчанию применяет незначительную симпатичную печать, а JSON.stringify - нет.

Попробуйте это:

content = {'currencySymbol':'BTC'}
contentHash = hashlib.sha512(json.dumps(content, separators=(',',':')).encode('latin1')).hexdigest()

При добавлении separators=(',',':') к json.dumps он удалит лишние пробелы, добавленные по умолчанию

документация для json.dumps

...