鍍金池/ 問答/Python  Linux/ Python的hashlib和hmac庫對字符串進行sha256加密有什么不同?

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 編碼

請問我最上面的代碼是否符合該要求?

回答
編輯回答
冷咖啡

hmac 本身是一套算法(這套算法要用到一個哈希算法,你可以指定,你代碼中指定的是 sha256)。
你算 hmac ,和算 sha256 本身就是兩回事,結果當然不一樣了。

第二個 j 是按需求做的,不過沒看到里面有“簽名串”數(shù)據(jù)。

2018年2月8日 17:11