根据我读过的书,它说S.H.A(安全散列算法)是冲突resistant.But,如果输入空间是1024位数字,输出空间是512位消息摘要,那么它不应该冲突(2^1024)/(2512)次吗?由于范围小于要映射的域,因此应该会发生冲突。请解释一下我哪里出错了。
发布于 2016-03-12 16:01:48
也许你的书也提到了碰撞抵抗力的定义?这并不意味着没有创建冲突(显然不是这种情况),而是在给定散列的情况下,您不能轻松地创建产生该散列的消息。
如果很难找到散列到相同输出的两个输入,即,两个输入a和b使得H(a) = H(b)并且a_≠_b,则散列函数H是抗冲突的
来自维基百科
发布于 2016-03-13 02:03:18
碰撞的机会不取决于输入大小。发生512位散列冲突的可能性为1.4×10^77,请参阅Probability table
发布于 2022-01-24 16:44:59
正如您所描述的:由于输入空间(任意大小)大于输出空间(例如,sha512的512bit ),因此总是存在冲突。
“防碰撞”是指,发现碰撞的可能性很小。
当考虑到输出空间"512位“到底有多大时,您的困惑就得到了解答:
2^512 ( 512位数组的可能配置数)约为10^154。
作为比较:可见宇宙中的原子数量在10^80的范围内。一百万等于10^6,所以一百万的“可见宇宙”有10^86个原子。一百万乘以一百万个宇宙有10^92个原子。
如果你可以在一个原子上存储一个512位的值,那么你需要多少个宇宙才能存储所有可能的512位的值?
从一个特定的512位数字开始(假设has函数未损坏),获得冲突的概率p假设您可以生成具有速率R的新散列,并且t执行此操作的总时间为:
p = R*t/(2^(512/2))(指数减半,参见“生日附加”。成功的预期搜索空间是在n比特中找到冲突是n/2。)让我们插入一些示例数字:
比特币网络的has速率目前约为R = 200*10^15 / s (2亿terrahashes /s)。
考虑这样的情况:自从宇宙开始以来,比特币网络的当前散列容量将仅用于寻找特定散列值的冲突的唯一目的,即对于可用时间t=13.787*10^9 years,
那么到目前为止发现碰撞的概率大约是7×10^-41%
同样,很难理解这个数字有多小。
编辑:这里有一个类似的问题,有一个很好的答案:https://crypto.stackexchange.com/questions/89558/are-sha-256-and-sha-512-collision-resistant
https://stackoverflow.com/questions/35954964
复制相似问题