Python的hashlib和hmac库对字符串进行sha256加密有什么不同?

import hashlib
import hmac
import base64

sk = '1f234efb-7dfc74012283'
k = hashlib.sha256()
k.update(sk.encode())
print(k.digest())
print("b64: {}".format(base64.b64encode(k.digest())))
print("***************")

j = hmac.new(sk.encode(), digestmod=hashlib.sha256)
print(j.digest())
print(base64.b64encode(j.digest()))

如上代码,上下两部分是hashlib和hmac关于sha256加密的写法,结果不一致,不知道写法是否正确?

需求来自:

计算签名
计算被签名串的签名 signature。
● 将API密钥的私钥 ( secret_key ) 作为key,生成被签名串的 HMAC-SHA256 签名
● 将签名进行 Base64 编码

请问我最上面的代码是否符合该要求?

阅读 11.2k
1 个回答

hmac 本身是一套算法(这套算法要用到一个哈希算法,你可以指定,你代码中指定的是 sha256)。
你算 hmac ,和算 sha256 本身就是两回事,结果当然不一样了。

第二个 j 是按需求做的,不过没看到里面有“签名串”数据。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏