由于git SHA是从提交文件,元数据和提交消息生成的哈希,因此更改提交消息会更改SHA。
但是,是否可以对保留SHA的提交消息进行更改,通过在结尾处用一些随机字符串“平衡”对消息的更改来取消对原始消息的更改? / p>
答案 0 :(得分:7)
您正试图找到SHA1哈希算法的冲突,这只能通过需要大量计算能力的暴力攻击才能测试所有可能的填充。
可以在此处找到对此的一些分析: https://www.schneier.com/blog/archives/2012/10/when_will_we_se.html
他们写道:
因此,碰撞攻击完全在一个范围内 有组织犯罪集团可以在2018年之前实际预算,并且a 大学研究项目到2021年。
“正常”的人最好在赌博中试试运气。 ;)
如果您对更多细节感兴趣,请在http://crypto.stackexchange.com询问,因为这个问题实际上是关于加密而不是关于git。
答案 1 :(得分:3)
理论上这是可能的 - 可能存在一些填充来保留SHA1总和。
实际上这非常困难 - SHA1是一个加密安全的哈希函数,这意味着像你提出的建议实际上无法完成(非延展性)。如果可以,SHA1将是一个糟糕的加密哈希值。
答案 2 :(得分:0)
很简单,但需要时间。准备好在接下来的几年里尝试不同的填充,直到你得到匹配的SHA。
如果您的签到允许您添加一个字符而不更改签入的语义(注释,可选空格;您有什么),请尝试再添加一个并查看生成的哈希值。
预计需要再试几次。 SHA1是160位,所以你应该计划花费2 ^ 160倍的大部分时间(约1.46e48)。