sha1碰撞的概率有多大?

本人对hash类的算法了解非常少,可能一发问,上帝就嘲笑,嘿嘿!想请问专业人士,根据一个网页地址算它的sha1,作为文件名,存网页的内容,文件名发生碰…
关注者
26
被浏览
69,330

3 个回答

sha1有20个字节,也就是256的20次方样本一定会碰撞,这是一个很大的数,当然碰撞概率是有算法的,不过你的需求基本不需要担心,否则sha1就毫无价值了。

但是在安全领域,已经推荐sha256和sha512了,sha1已经倾向于不推荐,md5可以认为已经被破解。

业余人士,不当之处请指教。

首先,碰撞概率与计算散列(Hash)值的样本数量有关,对10000个文件计算 SHA-1,任意两个发生碰撞的概率当然大于「只对10个文件计算 SHA-1」。

假设一个散列函数完全符合散列值的平均分布,那么求碰撞概率的问题就可以看作生日问题(

wikipedia.org:生日攻击

:)。

但对于现在的散列函数来说,上百位的输出长度不适合用传统的方法计算碰撞概率,题主可以自己去查看有哪些近似的算法。最后可以得出如下的表格(来自

wikipedia.org: Birthday attack

):


SHA-1 函数产生 160 位的输出,所以各个碰撞概率需要的样本数介于 128 位和 256 位之间。