仅使用哈希的前 6 个字符时 GIT 哈希冲突的几率

  • 本文关键字:哈希 GIT 几率 字符 冲突 git hash
  • 更新时间 :
  • 英文 :


嘿伙计们,我们正在使用多个存储库,并将哈希作为标识符存储在数据库中。

问题是,在我的应用程序后面,我只有一个短哈希(AKA:8df639)而不是完整的哈希(AKA:8df639b301a1e10c36cc2f03bbdf8863)。我虽然关于使用选择语句如下

SELECT foo FROM table WHERE hash LIKE '8df639%' LIMIT 1

但是我开始担心随着哈希开始堆积,我以后可能会遇到哈希冲突。

问题是,这是一个合理的恐惧,还是像我在 36^4 时那样可以吗?(1679616组合),由于它们来自不同的存储库,是否有真正可能发生的碰撞?

如果可能,最好存储整个哈希。

Git 本身将接受短哈希(通常为 7 个字符,而不是 6 个字符),但前提是它们保持唯一。如果你生成了两个以 8df639b 开头的提交,你将被迫输入更多的哈希值,然后 Git 才会识别你所说的提交。

顺便说一句,我相信您实际上有 16,777,216 个包含六个字符的组合 (16^6),但是在生成那么多提交对象之前,您很可能会发生冲突。

最新更新