【问题标题】:If I know the hashes of two parts of some data, can I calculate the hash of the full data from those hashes?如果我知道某些数据的两个部分的哈希值,我可以从这些哈希值中计算出完整数据的哈希值吗?
【发布时间】:2011-08-17 16:54:52
【问题描述】:

如果我知道某些数据的两个(或更多)部分的哈希值,我可以从这些哈希值中计算出完整数据的哈希值吗?

这可以用于哪些哈希类型? SHA1、SHA256、MD5? (哈希的安全性对我的用例并不重要。)

data0 = '0123'
data1 = '45678'
all_data = data0 + data1
hash0 = hash(data0)
hash1 = hash(data1)

fn 是否存在使得

hash(all_data) == fn(hash0, hash1)

对于 MD5、SHA1 或 SHA256 是否存在 fn?

谢谢,

克里斯。

【问题讨论】:

  • 如果是这样,那盐不会有点用处吗?

标签: hash md5 sha1 sha256


【解决方案1】:

简短的回答。没有。

对于最小偏差,哈希是完全不同的,除非您无法计算它们,否则这是行不通的。即使您可以计算它们,结果也将是您可以选择的可能性列表。所以没有什么是确定性的。

【讨论】:

    【解决方案2】:

    通过data0 散列使系统处于某种中间状态。您的hash(data1) 是从干净状态计算出来的。您无法修复 hash1 来弥补缺少的中间状态(以获得良好的哈希函数)。

    【讨论】:

      猜你喜欢
      • 2017-10-28
      • 1970-01-01
      • 1970-01-01
      • 2013-07-23
      • 2010-10-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-01
      相关资源
      最近更新 更多