内容的等效CryptoJS SHA512哈希为Python编码的十六进制?

问题描述 投票:1回答:1

我正在尝试进行经过身份验证的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

我不知道我的要求有什么问题。请指教。

javascript python cryptojs hashlib
1个回答
0
投票

你的问题是json.dumps默认应用一些小的漂亮打印,但JSON.stringify没有。

试试这个:

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

通过将separators=(',',':')添加到json.dumps,它将删除默认添加的额外空格

documentationjson.dumps

© www.soinside.com 2019 - 2024. All rights reserved.