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

3

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

但是,是否可能通过在消息末尾添加一些随机字符串来“平衡”消息的更改,以保留SHA呢?这样做可以抵消对原始消息的更改。


1
你为什么想要那个? - jcm
1
实际应用(如果可行):假设您的评论通过URL引用了跟踪器中的问题,而这些问题即将全部更改。 - joachim
从这里的答案来看,似乎你需要找到一个解决方法。 - jcm
3个回答

8
你正在尝试找到SHA1哈希算法的碰撞,这只能通过暴力攻击来实现,需要大量计算能力来测试所有可能的填充。
关于此问题的一些分析可以在这里找到: https://www.schneier.com/blog/archives/2012/10/when_will_we_se.html 他们写道:
一个碰撞攻击因此是有组织犯罪集团在2018年内可以实际预算的范围之内,而大学研究项目则在2021年。
“普通”人最好在赌博中尝试运气。 ;)
如果您对更多细节感兴趣,请在http://crypto.stackexchange.com上提问,因为这个问题实际上与密码学有关,而不是与git有关。

3
理论上这是可能的——很可能存在一些填充方式可以保持SHA1校验和。
但实际上这非常困难——SHA1是一种加密安全哈希函数,这意味着像你所提出的事情在实践中无法实现(不可篡改性)。如果可以实现,那么SHA1将成为一个糟糕的加密哈希函数。

0

虽然简单,但需要时间。准备花费未来几年的时间尝试不同的填充方式,直到获得匹配的SHA。

如果您的签入允许您添加一个字符而不改变签入的语义(注释、可选空格等),请尝试添加一个字符并查看生成的哈希值。

预计需要再尝试几次。SHA1是160位,因此您应该计划花费2^160次方的显着部分时间(约为1.46e48)。


这只是对@michas优秀回答的一个玩笑性质的转述。 - tripleee

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接