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 编码
请问我最上面的代码是否符合该要求?
hmac
本身是一套算法(这套算法要用到一个哈希算法,你可以指定,你代码中指定的是sha256
)。你算
hmac
,和算sha256
本身就是两回事,结果当然不一样了。第二个
j
是按需求做的,不过没看到里面有“签名串”数据。