Git中的哈希冲突

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (24)

如果我在使用git时遇到了哈希冲突,那么实际会发生什么呢?

例如:我设法用相同的SHA 1校验和提交了两个文件,Git会注意到它还是损坏其中一个文件?

GIT是否能够得到改进以适应这种情况,或者我是否需要改变一种新的哈希算法?

提问于
用户回答回答于

一个SHA-1散列是一个40六进制字符串...这是每字符4位乘以40...。160位。现在我们知道10位大约是1000(确切地说是1024),这意味着有1 000 000 000(确切地说是1024)。1048。

这相当于什么?月球是由大约1047个原子组成的。所以,如果我们有10个月亮,你在其中一个卫星上随机选择一个原子,然后再在它们上选择一个随机原子,那么你两次选择同一个原子的可能性,就是两个git提交有相同的SHA-1哈希的可能性。

在此基础上扩展.在开始担心冲突之前,需要在存储库中提交多少次?这与所谓的“生日攻击”有关,它反过来又指“生日悖论”,它指出,当你从给定的一组随机挑选时,你需要的挑选次数少得令人惊讶,然后你才会选择两次。但是,“令人惊讶的少”是一个非常相对的术语在这里。

用户回答回答于

如果两个文件在git中具有相同的散列和,则将这些文件视为相同的文件。在绝对不可能发生这种情况的情况下,你总是可以返回一次提交,并更改文件中的某些内容,这样它们就不会再发生冲突了.

扫码关注云+社区