有人说CRC-64对于64位块是双射的。 br />
例如,散列单个512位块时SHA-512是否是双射的?

评论

相关问题加密哈希函数是否是完美的哈希函数?和AES-192,AES-256中是否存在关键冲突?

现在也许像SHA-1这样的密码散列有多么令人讨厌?。

#1 楼

如果事实确实如此,那将是非常奇怪的事情。具有这样的双射性不是SHA-512的预期特性。甚至会令人担忧,因为这是一种不应出现在适当的加密哈希函数中的结构。

实际上证明SHA-512对于512位块而言不是双射的,已经是一个问题。我们不希望能够在不破坏功能的情况下证明这些事情。

一种简单的证明方式就是一次碰撞(在短输入上),理论上可以找到机会。但是要找到这样的值,我们期望必须计算大约$ 2 ^ {256} $的哈希值(并将它们存储/与其他值进行比较),以使找到冲突的概率不容小视。例如,如果我有一个zettabyte的快速访问存储(这将是人类当前存储数据的一半以上),那么我可以存储大约$ 2 ^ {62} $个SHA-512哈希值。这些之间至少有一个重复项的概率约为2 ^ {-389} \约10 ^ {-117} $。如果每个人(在某些年份中大约$ 2 ^ {33} $)每周重复一次该实验(即每年$ 2 ^ 6 $次)并重复$ 2 ^ {62} $个新哈希,那么人类每年就有2美元的机会^ {-351} $发现碰撞。假设人类将在宇宙已经存在的时间(即1300亿年)上进行10倍的工作,我们就有机会获得$ 2 ^ {-314} \约10 ^ {-94} $的机会。为了进行比较,一张彩票在德国每周彩票(6/49)中赢得主要奖金的概率约为$ 2 ^ {-27} $,因此人类在上述情况下会发生碰撞的概率为低于我每周连续赢得11个主要奖项的概率(每周一张票)。

因此,我们可以期待冲突会一直隐藏到最后。 />

评论


$ \ begingroup $
评论不用于扩展讨论;此对话已移至聊天。
$ \ endgroup $
– e-sushi
17年6月25日在11:11

#2 楼

不能。加密散列函数对随机函数进行建模,而不是对随机排列进行建模。输出散列值的很大一部分预计将无法到达,而另一部分则具有多个原像。

对于所使用的构造类型,通常双射性并不意味着逆易于计算。在实践中的散列函数中,如果它是双射的,则很容易将其反转,因此不会成为非常好的散列函数。

还有其他已知的双射(候选)单向函数,例如用于非对称密码的结构,但这些结构往往要慢得多,并且与哈希函数中使用的结构不同。

#3 楼

编号:

证明:

让A为由长度为N的位字符串表示的对象“ 10001010110101100 ...”

让H是A的哈希值,SHA256(A)= H,H的长度为256位

H有多少种可能性?答案是2,即256的幂。

我们得到了多少个可能的A值?答案是N的2的幂。因此,如果N> 256比我们的哈希值不可能唯一,那么在这种情况下,可能会给哈希值分配太多的值。因此,我们肯定会有重复的哈希值,至少是N-256重复哈希值的2倍。 256位的千兆字节? ;)
您可以在信息科学中找到有关此类问题的答案。

(SHA256哈希对于大小<= 256位的对象是唯一的)

评论


$ \ begingroup $
该证明不起作用,因为问题是将输入限制为N = 256
$ \ endgroup $
–雨披
18/12/6在16:08

$ \ begingroup $
我们不知道SHA256在<= 256位输入中是唯一的,正如您先前所说的那样,您无需解释就可以声明甚至是认为它很可能。如果您能证明这一点,那么您将在密码学家中出名。
$ \ endgroup $
–dave_thompson_085
18/12/7在3:02