我试图用简单的术语理解SHA的唯一性。例如,让我们假设整个世界中只有最大长度为4位(二进制)的消息。不同长度的可能消息数为
应该是2 + 4 + 8 + 16 = 30。
让我们考虑SHA3,其摘要长度为3位(二进制),因此摘要的最大可能数目为8。如果我们需要将30条消息映射到8条消息,摘要将是唯一的,或者为什么很难找到2条独特消息的摘要冲突
任何SHA3变体的摘要都超过100位。该术语可能使您感到困惑,因为SHA256具有256位,而SHA3被认为是第三代SHA算法(并且没有3位长度)。
通常来说,通过蛮力找到哈希冲突并不困难(alas,这很耗时),难于产生在上下文中也有意义的冲突。例如,假设您有一个重要应用程序的源文件,该文件哈希为摘要。如果攻击者试图以某种方式更改源文件以引入漏洞,同时又将其散列到同一摘要中,则他将不得不引入大量随机垃圾,使攻击显而易见。
我不确定您所说的“ SHA唯一性”是什么意思。 SHA值(任何版本)不是唯一的,也不是唯一的,因为它将无限数量的输入(任意长度的输入)映射到有限数量的输出。
加密散列函数具有三个重要属性(在常规散列上使其成为加密散列:]
您的示例中唯一的问题是尺寸。这么小的数字当然是毫无意义的。但是,如果哈希值是512位,则它突然变得非常耗时,因此几乎无法进行暴力破解。