如何解决用Javascript生成HMAC与用python带有utf-8编码字符生成的HMAC不匹配
python服务器生成hmac:
dict_payload = {"name": "Emulsión"}
payload = jsonpickle.encode(dict_payload,unpicklable=False)
python_hmac = hmac.new("secret",bytes(payload,"utf-8"),hashlib.sha256,)
returns - 29c7e4b7049a61c24d0f57c402510d6b0c42b15e97981d6ce96b02fdcf913a45
和节点js:
payload = {"name": "Emulsión"}
crypto
.createHmac("sha256","secret")
.update(payload,"utf8")
.digest("hex");
returns - 61d834992df9a302d8ca1768d4d04be644ba1c35054b342db3ed29f4b2f1e888
似乎在python中,ó
字符已由\u00f3
替换
如何在Javascript中实现相同功能?
解决方法
您需要确保正确处理输入中的引号。
payload = {"name": "Emulsión"}
str(payload)
给你:
"{'name': 'Emulsión'}"
这与带有双引号的json字符串不同:
'{"name": "Emulsión"}'
,将导致不同的结果。如果您确保您的字符串完全相同相同,则会得到相同的结果:
import hmac
import hashlib
payload = '{"name": "Emulsión"}'
python_hmac = hmac.new(b"secret",bytes(payload,"utf-8"),hashlib.sha256,)
python_hmac.hexdigest()
# '61d834992df9a302d8ca1768d4d04be644ba1c35054b342db3ed29f4b2f1e888'
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。