是否可以知道提交哈希值但不访问存储库来获得提交的时间/日期?

Ion*_*zău 5 git date git-commit

假设我有提交哈希,但没有对git存储库的访问权限,是否有可能获得提交提交的时间?

如何才能做到这一点?

根据此答案,提交哈希包含完成的日期和时间。

例:

1484e89060b2043be0b71209bacc2254161f1a8f被做了Wed Sep 3 09:30:59 2014 +0300

Von*_*onC 5

正如“公开 git sha1 提交哈希值有什么危险吗? ”中所述:

您绝对无法将 git commit 的 SHA 1 哈希与提交的实际内容相关联。

尽管 SHA-1 名义上是单向的,但理论上这将允许想要猜测对象内容的攻击者验证他的猜测是否正确。
这将需要准确猜测,直到最后一位,包括时间戳和其他类似的东西

因此,如果您无权访问完整的 git 存储库,那似乎是不可能的。


如此线程中所述,您可以使用 SHA1 做的唯一事情就是找到具有相同 SHA1 的内容:

术语“反向”不是正确使用的词。
这意味着您可以生成另一个输入,其 SHA1 输出与您的其他 SHA1 输出匹配。这是因为 SHA1 有冲突。

所以“ foo”可以散列到1,“ bar”也可以散列到1。
这并不意味着 1 意味着foo,但它意味着如果您的密码是foo,则bar在散列并与存储的散列进行比较时也可以工作。

如果原始输入不是很短,则极不可能找到具有相同 SHA-1 哈希的输入。
这些攻击之所以有效,是因为密码较弱且 SHA-1 计算速度快,而不是因为 SHA-1 作为加密哈希函数的任何弱点。


注意:这(找到具有相同 SHA1 的内容)实际上是项目bradfitz/gitbrute所做的(为了“乐趣”)

gitbrute 暴力破解一对作者+提交者时间戳,以便生成的 git commit 具有您想要的前缀。

它将找到满足您前缀的最近时间。

我在“ git 如何处理 blob 上的 SHA-1 冲突? ”中提到过。