我正在尝试进行经过身份验证的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()
哈希:18aa13a42b5efe3c45b37050626f23fcc4f3b4acf5e479f2f50212722cdcd80baa0ba6ddf8dcbd0f1b88008aaf9ec33874e4be9ab6ec2dece611c2dbdca87560
预期哈希:e6e0b5e9941269e61fb41bd4f6a0dc5be0da1c011087a057ff88fe3de98f41c6681983dd14662c88b6293663d942c93511c3fd7f9cc5250e686b16de53a18f57
我不知道我的要求有什么问题。请指教。
你的问题是json.dumps
默认应用一些小的漂亮打印,但JSON.stringify
没有。
试试这个:
content = {'currencySymbol':'BTC'}
contentHash = hashlib.sha512(json.dumps(content, separators=(',',':')).encode('latin1')).hexdigest()
通过将separators=(',',':')
添加到json.dumps
,它将删除默认添加的额外空格
documentation为json.dumps