javascript - 为python编码的内容十六进制的等效CryptoJS SHA512哈希?
问题描述
我正在尝试进行经过身份验证的 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=(',',':')
to json.dumps
,它将删除默认添加的额外空格
文档_json.dumps
推荐阅读
- html - 如何使图标缩进
- javascript - 如何获取表格行中点击元素的 id?
- android - 如何在android中的relativelayout中定位LinearLayouts?
- sql - 获取插入到雪花数据仓库中的行的标识
- postgresql - 将“db.backup”导入 phpPgAdmin 时出现问题
- excel - Excel:从尚未指定的范围内返回值
- macos - MacOS Mojave 终端的字体不会改变。它将每个用户安装的字体显示为 Helvetica
- laravel - larvel 刀片模板和 elequent 模型——如何在许多关系中获取第一个元素
- jenkins - MSBuild 项目的 SONAR + R# 分析集成
- qt - 如何将 QString qDebug 输出作为字符串?