jsSHA与Python hashlib同输入生成不同HMAC-SHA1结果咨询
HMAC-SHA1计算结果不一致的问题解决
问题根源在于Python代码的参数传递错误:
- Node.js代码仅对字符串
"123"进行HMAC计算 - Python代码中
hmac.new的第二个参数错误传入了b"TEXT",后续又执行update("123"),实际计算的是"TEXT123"的HMAC,和Node.js的输入内容不一致,最终导致结果不同
修正后的Python代码
import hmac import hashlib import base64 # 方式1:直接传入初始消息b"123" hashed = hmac.new(b"abc", b"123", hashlib.sha1) # 方式2:先初始化空消息再更新内容 # hashed = hmac.new(b"abc", digestmod=hashlib.sha1) # hashed.update("123".encode('utf-8')) print(base64.b64encode(hashed.digest()).decode())
修正后运行结果为:vpEGplDt4B9KMf3iOB0G9ftz5hI=,与Node.js代码的计算结果完全一致。
内容的提问来源于stack exchange,提问作者haolee
相关产品推荐
相关产品推荐

