【问题标题】:Can the SHA-256 hash be derived from the SHA-512hash of the same data?SHA-256 哈希可以从相同数据的 SHA-512 哈希导出吗?
【发布时间】:2011-02-13 23:53:55
【问题描述】:

我正在对数据应用 SHA-512。从其 SHA-512 哈希中导出原始数据的 SHA-256 哈希在理论上/实际上是否可行?

【问题讨论】:

  • 您实际上对哪种方式感兴趣?标题说 256 到 512;文字显示 512 到 256。
  • 你的标题是“512 from 256”;您的问题正文显示“来自 512 的 256”。是哪个?!
  • 你的意思是找到一些函数 F 使得 SHA256(n) == F(SHA512(n)) ?
  • @GregS:显然不可能从 256 中获得 512(由于鸽巢原理)。反过来真的是一个明确的“不”吗?
  • 这真正归结为,对于所有输入xy 这样SHA512(x) == SHA512(y),是SHA256(x) == SHA256(y) 的情况吗?我们所需要的只是一个反例......

标签: security hash sha


【解决方案1】:

由于它们具有不同的轮数、不同的内部状态大小和不同的块大小,我很确定 SHA-256 和 SHA-512 的结果是如此不同,以至于您无法从中得出任何一个另一个。

但是,如果您偏执,您可以为不同的哈希函数附加/预先添加不同的数据。即你计算SHA-256("A"+data+"B")SHA-512("D"+data+"E")(当然用更长的字符串而不是ABCD)。

我看到的唯一可能性是,如果可能的输入值集很小,那么你会暴力破解可能的值,直到你找到已知的哈希值,然后计算另一个哈希值。基本上只要条件让攻击者可以反转已知的hash,他也可以计算出另一个hash。

【讨论】:

  • 你可能无法用一些封闭形式的表达式来推导它,但仍然存在理论上简单地使用巨大查找表的可能性。
  • 我看不出查找表在这里有什么用处。 IMO 试图猜测输入是唯一可行的攻击,除了几乎完全破坏散列内部发生的加密。
  • 我同意。您无法仅知道 SHA-512 就得出 SHA-256,因为算法在不同大小的块上运行并运行不同的轮数。 SHA-256 哈希不仅仅是 SHA-512 哈希的“短”版本。这就是加密哈希函数的本质(和有用性)。
  • 理论上一个足够大的查找表几乎可以解决任何问题......现在构建这样一个表需要多长时间以及它有多大?我正在考虑 10^142 TB 的完整 SHA-512 表,对吗?哈哈...也许我们在这里偏离了可行性。
  • @MDaubs 即使那个表也不能解决问题。因为您只得到一个与给定 SHA512 哈希匹配的输入。不一定是最初散列的那个。因此您仍然无法计算原始数据的 SHA-256 哈希。
猜你喜欢
  • 2014-08-19
  • 2018-03-12
  • 2023-03-18
  • 2013-01-09
  • 1970-01-01
  • 2021-11-25
  • 1970-01-01
  • 1970-01-01
  • 2019-07-21
相关资源
最近更新 更多