Hash 两个不同输入的哈希值是否相同?

Hash 两个不同输入的哈希值是否相同?,hash,cryptography,Hash,Cryptography,根据我的理解,散列是一个将唯一的固定长度(假设为64位)输出到任意长度输入的过程。(如果我错了,请纠正我) 因此,如果我获取散列函数可以生成的所有(x)可能的64位散列值,并在其末尾附加0或1。我得到一个大小为2x的列表(其中每个哈希长度为65位) 如果我将所有2x组合作为同一哈希函数的输入,它如何为所有输入生成唯一的哈希?你是正确的。这被称为散列冲突,这是真实的。这不是一个更大的问题的原因是散列的数量是如此之多,以至于这种类型的冲突非常罕见。不过,您的64位示例有点不现实。256位或512位是

根据我的理解,散列是一个将唯一的固定长度(假设为64位)输出到任意长度输入的过程。(如果我错了,请纠正我)

因此,如果我获取散列函数可以生成的所有(x)可能的64位散列值,并在其末尾附加0或1。我得到一个大小为2x的列表(其中每个哈希长度为65位)


如果我将所有2x组合作为同一哈希函数的输入,它如何为所有输入生成唯一的哈希?

你是正确的。这被称为散列冲突,这是真实的。这不是一个更大的问题的原因是散列的数量是如此之多,以至于这种类型的冲突非常罕见。不过,您的64位示例有点不现实。256位或512位是更可能的情况。(即使是128也不再被认为足够强。)而且在这种情况下,散列的范围非常大,因此很难找到创建散列冲突的输入。

根据,散列冲突是不可避免的。那就是m1!=m2和H(m1)=H(m2)

不能为输入生成唯一的哈希。以很小的概率,将会发生碰撞。即使在2^64个可能的值中,具有64位输出的哈希函数也可能发生冲突

最好使用散列函数,如,如果您真的希望它们是唯一的,请与以前生成的散列进行比较

  • SHA3系列可以生成224、256、384或512位输出

这是所谓的,而不是鸽子原则。因此,根据这一原则,如果猜测的密码产生的哈希代码与真实密码的哈希代码相同,那么仍有可能(即使很小)有人使用猜测的密码访问您的帐户?