【问题标题】:SHA256 vs HMAC empty messageSHA256 vs HMAC 空消息
【发布时间】:2018-08-06 11:48:20
【问题描述】:

为什么这些函数返回不同的值?

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 的消息值中放入空字符串,为什么返回的值与简单的 SHA256 不同? 这两个值是否相关?

【问题讨论】:

  • return hmac.new(seed, b"", sha256).hexdigest() 和 return hmac.new(seed, None, sha256).hexdigest() 一样
  • 您应该检查sha256hmac 之间的区别。 This 是一个很好的起点。

标签: python hash cryptography sha256 hmac


【解决方案1】:

当使用 HMAC 时,种子被 ipadopad 屏蔽,并且 HMAC 由两次哈希迭代组成,即使 HMAC 用于空字符串也是如此。

基本上,从散列函数获得与 HMAC 相同结果的唯一方法是使用它来构建 HMAC - 因为 HMAC 定义仅使用散列作为安全原语函数。

【讨论】:

    猜你喜欢
    • 2018-07-05
    • 2016-11-03
    • 2018-09-24
    • 1970-01-01
    • 1970-01-01
    • 2020-10-18
    • 2016-01-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多