更改git提交消息并保持SHA不变

更改git提交消息并保持SHA不变,git,sha,Git,Sha,由于git SHA是从提交文件、元数据和提交消息生成的哈希,因此更改提交消息会更改SHA 但是,通过在消息末尾使用一些随机字符串来“平衡”对消息的更改,从而取消对原始消息的更改,是否有可能对保留SHA的提交消息进行更改?理论上这是可能的-可能存在一些填充来保留SHA1和 在实践中,这是非常困难的-SHA1是一个加密安全的哈希函数,这意味着像您建议的那样的事情实际上无法完成(非延展性)。如果可能的话,SHA1将是一个糟糕的加密哈希。您正在尝试为SHA1哈希算法找到冲突,这只有通过需要大量计算能力来

由于git SHA是从提交文件、元数据和提交消息生成的哈希,因此更改提交消息会更改SHA


但是,通过在消息末尾使用一些随机字符串来“平衡”对消息的更改,从而取消对原始消息的更改,是否有可能对保留SHA的提交消息进行更改?

理论上这是可能的-可能存在一些填充来保留SHA1和


在实践中,这是非常困难的-SHA1是一个加密安全的哈希函数,这意味着像您建议的那样的事情实际上无法完成(非延展性)。如果可能的话,SHA1将是一个糟糕的加密哈希。

您正在尝试为SHA1哈希算法找到冲突,这只有通过需要大量计算能力来测试所有可能填充的蛮力攻击才能实现

有关这方面的一些分析可以在这里找到:

他们写道:

因此,碰撞攻击完全在攻击范围内 到2018年,有组织犯罪辛迪加几乎可以预算,并且 2021年大学研究项目

“正常人”最好在赌博中碰碰运气


如果您对更详细的信息感兴趣,请访问,因为这个问题实际上是关于密码学的,而不是关于git的。

简单,但需要时间。准备好在接下来的几年里尝试不同的填充物,直到你得到一个匹配的沙

如果您的签入允许您在不更改签入语义的情况下添加字符(注释、可选空白;您有什么),请尝试再添加一个字符,并查看结果哈希是什么


预计需要再试几次。SHA1是160位,因此您应该计划花费2^160倍(约1.46e48)的一大部分。

您为什么要这样做?实际应用(是否可行):假设您的评论通过URL引用了您的跟踪器中的问题,这些都将要改变。从这里的答案看来,你需要找到一个解决办法。这真的只是对@michas'极好答案的一个开玩笑的解释。