据我所知,一个非常常见的哈希码有256位。
它从消息中输出256位的哈希代码。该哈希代码应该是该消息唯一的。这种信息可以类似于电子邮件。
但是一条消息可能很长,比256位要长得多。
理论上可以有2^256种不同的哈希码,这是一个非常大的数字。
但是如果一条消息包含1000个字母,每个字母是8位,那就是8000位。也可以有2^8000种不同的消息。即使我们只讨论了2^1000条可能的消息,这些信息仍然是巨大的。因此,我们放置了一个长串位,并产生了一个256位名为“哈希码”。
如果我们将2^1000条消息除以2^256散列码,则每个哈希码有2^744条消息。
哈希码对消息是唯一的,这是怎么可能的?难道不应该有一些串通,比如两个不同的消息具有相同的哈希码?
发布于 2022-12-08 17:17:57
可能的哈希码的数量比可能的消息的数量要大得多,但并不是每个消息都有2^744个哈希码。实际上,给定消息的可能哈希码的数量要比2^256小得多,因为一个好的散列函数将可能的消息均匀地分布在所有可能的哈希码的空间中。这意味着,虽然理论上两种不同的消息都有可能具有相同的哈希码(称为“冲突”),但对于设计良好的哈希函数来说,发生这种情况的可能性非常小。因此,我们可以说哈希码对于消息来说是“唯一的”,因为两种不同的消息都不太可能有相同的哈希码。
https://crypto.stackexchange.com/questions/103182
复制相似问题