Hash 两个不同输入的哈希值是否相同?
根据我的理解,散列是一个将唯一的固定长度(假设为64位)输出到任意长度输入的过程。(如果我错了,请纠正我) 因此,如果我获取散列函数可以生成的所有(x)可能的64位散列值,并在其末尾附加0或1。我得到一个大小为2x的列表(其中每个哈希长度为65位)Hash 两个不同输入的哈希值是否相同?,hash,cryptography,Hash,Cryptography,根据我的理解,散列是一个将唯一的固定长度(假设为64位)输出到任意长度输入的过程。(如果我错了,请纠正我) 因此,如果我获取散列函数可以生成的所有(x)可能的64位散列值,并在其末尾附加0或1。我得到一个大小为2x的列表(其中每个哈希长度为65位) 如果我将所有2x组合作为同一哈希函数的输入,它如何为所有输入生成唯一的哈希?你是正确的。这被称为散列冲突,这是真实的。这不是一个更大的问题的原因是散列的数量是如此之多,以至于这种类型的冲突非常罕见。不过,您的64位示例有点不现实。256位或512位是
如果我将所有2x组合作为同一哈希函数的输入,它如何为所有输入生成唯一的哈希?你是正确的。这被称为散列冲突,这是真实的。这不是一个更大的问题的原因是散列的数量是如此之多,以至于这种类型的冲突非常罕见。不过,您的64位示例有点不现实。256位或512位是更可能的情况。(即使是128也不再被认为足够强。)而且在这种情况下,散列的范围非常大,因此很难找到创建散列冲突的输入。根据,散列冲突是不可避免的。那就是m1!=m2和H(m1)=H(m2) 不能为输入生成唯一的哈希。以很小的概率,将会发生碰撞。即使在2^64个可能的值中,具有64位输出的哈希函数也可能发生冲突 最好使用散列函数,如,如果您真的希望它们是唯一的,请与以前生成的散列进行比较
- SHA3系列可以生成224、256、384或512位输出