![sha1sum 函数如何为您提供唯一的哈希值?](https://linux22.com/image/138955/sha1sum%20%E5%87%BD%E6%95%B0%E5%A6%82%E4%BD%95%E4%B8%BA%E6%82%A8%E6%8F%90%E4%BE%9B%E5%94%AF%E4%B8%80%E7%9A%84%E5%93%88%E5%B8%8C%E5%80%BC%EF%BC%9F%20.png)
我读到使用该sha1sum
命令将运行 SHA-1 算法并给出“唯一”结果,但这怎么可能呢?
sha1sum
为您提供 40 个字符的哈希值,如下所示:
e5fa44f2b31c1fb553b6021e7360d07d5d91ff5e
它长度为 40 个字符,并且包含十六进制字符,因此哈希最多可以有 16 40种组合。
这意味着,对于任意两个随机文件,是他们的哈希和完全相同的可能性很小,对吗?
答案1
与任何哈希一样,SHA-1 哈希不是唯一的;实际上已发现碰撞(更重要的是,精心制作)。
哈希函数的理想特性是很难构造两个产生相同哈希值的文件,而不是生成的哈希值是唯一的(正如您提到的,SHA-1 和有 160 位,因此只有 2160 个不同的哈希值) );困难意味着你无法比暴力搜索更快地找到碰撞。如果您选择一个文件,则另一个随机选择的文件有二分之一的机会具有相同的哈希值。 SHA-1 是自2005年以来被认为不安全;由于生日攻击,您会看到那里给出的几率为二分之一 80 (几率是在一个大干草堆中找到两个冲突文件的几率,而不是找到特定目标的冲突文件的几率)。