SHA256 与 HMAC 空消息
SHA256 vs HMAC empty message
为什么这些函数 return 有不同的值?
from hashlib import sha256
import hmac
seed = "seed".encode('utf-8')
def genSHA256():
return = sha256(seed).hexdigest()
#19b25856e1c150ca834cffc8b59b23adbd0ec0389e58eb22b3b64768098d002b
def genHMACsha256():
return hmac.new(seed, b"", sha256).hexdigest()
#2ad1ced5a9ef8e90bce26c0ac9fae5af5e4b4442b2315ed58bf772a54e24fd50
如果我在 HMAC 的消息值中放入空字符串,为什么 return 与简单的 SHA256 不同?
这两个值是否相关?
当使用 HMAC 时,种子被 ipad
和 opad
屏蔽,并且 HMAC 包含两个哈希迭代,即使在空字符串上使用 HMAC 也是如此。
基本上,从散列函数获得与 HMAC 相同结果的唯一方法是使用它来构建 HMAC - 因为 HMAC 定义仅使用散列作为安全原始函数。
为什么这些函数 return 有不同的值?
from hashlib import sha256
import hmac
seed = "seed".encode('utf-8')
def genSHA256():
return = sha256(seed).hexdigest()
#19b25856e1c150ca834cffc8b59b23adbd0ec0389e58eb22b3b64768098d002b
def genHMACsha256():
return hmac.new(seed, b"", sha256).hexdigest()
#2ad1ced5a9ef8e90bce26c0ac9fae5af5e4b4442b2315ed58bf772a54e24fd50
如果我在 HMAC 的消息值中放入空字符串,为什么 return 与简单的 SHA256 不同? 这两个值是否相关?
当使用 HMAC 时,种子被 ipad
和 opad
屏蔽,并且 HMAC 包含两个哈希迭代,即使在空字符串上使用 HMAC 也是如此。
基本上,从散列函数获得与 HMAC 相同结果的唯一方法是使用它来构建 HMAC - 因为 HMAC 定义仅使用散列作为安全原始函数。