3

SHA(-1-2-3) 是一对一的函数,输入的长度与输出的长度相同吗?

将问题重述为具体示例:SHA-1 具有 160 字节输出,那么所有 160 字节输入是否都具有唯一的 160 字节输出?SHA-2 和 3 以及所有可用输出大小的答案是否相同?

4

2 回答 2

5

没有人知道,因为没有人以一种或另一种方式证明这一点,或在该范围内测试所有可能的输入。这就是简单的事实。

如果函数的行为真的是随机的,那么由于生日悖论,答案几乎肯定是“否”——平均而言,对于 160 位输出,您需要测试 2^80 个输入以找到任何对之间的冲突。

于 2013-02-07T01:09:24.790 回答
3

简短回答:虽然没有确凿的、明确的答案,但我认为更安全的选择(到目前为止,如果您将问题扩展到涵盖所有SHA 系列功能)是说“”。让我们更数学一点。

让我们挑选并检查其中一个 SHA 系列函数。假设它返回一个n位输出,并且表现得像一个“随机预言机”(它没有,但假设它),这意味着它将为任何输入返回一个随机n位值,并具有始终返回相同输出的限制对于相同的输入。

有了这些假设,任何两个不相同的输入字符串的冲突概率应该是 2^(-n)。由于生日悖论,您会期望在大约 2^(n/2) 个不同的输入后发现碰撞。

因此,由于生日悖论,我们的函数在散列n位输入并生成n位输出时是一对一的机会并不好。

最终,最终回答您的问题的唯一方法是使用每个可能的n位 SHA 函数尝试所有可能的n位输入。不要指望在你的一生中得到一个明确的答案......

于 2013-02-07T01:02:09.330 回答