sha1sum重复文件

时间:2010-05-27 14:20:57

标签: unix hash

sha1sum可以为两个不同的文件返回相同的结果吗? 我从理论和实践的角度来问这两个问题。

4 个答案:

答案 0 :(得分:3)

是。散列的要点是避免有意义的冲突,因此对文件的微小更改会导致哈希值发生较大变化,因此攻击者很难产生冲突。

考虑一下:SHA-1哈希是160位。因此,无法表示任何大于160位的文件的所有可能状态!

答案 1 :(得分:2)

在数学上,所有散列函数都有冲突 - 也就是说,两个输入可以返回相同的散列。对于输入为N位且输出为M位的任何函数都是如此,其中M<N

然而,加密声音哈希算法产生的哈希是如此不可预测,需要数百万年的时间来猜测产生特定哈希的输入。一些哈希算法具有已知的弱点,使这更容易;当发生这种情况时,哈希被认为是“破碎的”,并且每个人都应该切换到一种新的更好的算法。

虽然我没有密切关注加密新闻,但SHA-1被认为是broken,所以理论上如果你能找到合适的工具,你可以生成两个具有相同SHA1输出的文件。

答案 2 :(得分:2)

SHA-1产生的哈希值只有160位。如果文件长度超过160位,则哈希不再能代表文件的所有可能值,因此如果您要尝试文件中的所有可能值,则一些冲突将是不可避免的。

有一种已知的攻击方式可以创建与SHA-1的冲突,但执行它是非常昂贵的。但是,这种攻击可以让攻击者找到两个产生相同结果的值。 让攻击者创建一个与我已经创建的文件产生相同哈希的文件。

就替代方案而言,SHA-256 只是SHA-1“加宽”以产生256位结果而不是160位 - 内部相当复杂(使用六个独立的每轮的功能与SHA-1的三个功能相比,这使得密码分析变得更慢,更困难。已经取得了一些进展,但大部分都是理论。

例如,我所知道的最好的攻击仅对故意削弱的SHA-256版本(42轮而不是标准的64轮)起作用。即便如此,它仍然是理论 - 它产生了从理论上预期的2 256 产生一个原像的工作,到2 251.7 - - 现在仍然太多了。

奇怪的是,在针对SHA-256的冲突攻击中似乎有相当少的 进展。我所知道的最好的攻击只能在大约20发左右的时候发挥作用(对19发子弹进行攻击,攻击最多可达23发左右)。

答案 3 :(得分:1)

关于SHA-1碰撞的维基百科:link。一些实数。