如何做这样的事情:
创建包含以下内容的内容:
$ cat testfile.txt
此文件将使用以下ID提交:83b90a07620ef578450c40a6d38bacc42de7ad2d
提交testfile.txt
$ git add testfile.txt
$ git commit -m'谢谢'
执行git log以验证预测的提交ID:
$ git log
提交83b90a07620ef578450c40a6d38bacc42de7ad2d
作者:rohit01< * @ gmail.com>
日期:2月21日星期五23:46:52 2014 +0530
基本上,预测下一个git commit id并提交一个包含该提交id的文件。
答案 0 :(得分:6)
这在加密方面是不可能的。
git commit ID是提交内容的SHA1哈希值 您在提交中所做的任何更改也会影响ID。
答案 1 :(得分:1)
CPU周期是个问题吗?如果你有无限的时间,这是有效的:
此文件将以此ID提交:83b90a07620ef578450c40a6d38bacc42de7ad2d
垃圾字符:VGhpcyBpcyBhbiBlYXN0ZXIgZWdnISBJIGNvdWxkbid0IHRoaW5rIG9mIGFueXRoaW5nIGdyZWF0IHRvIHB1dCBoZXJlLiBVc2luZyBiYXNlNjQgdG8gZ2VuZXJhdGUganVuay1sb29raW5nIGp1bmsgaXMga2luZCBvZiBzaWxseSwgYnV0IHRoaXMgc2hvdWxkIGJlIGVub3VnaCwgcmlnaHQ / ICBJZGsuIFVwdm90ZSBwbHo /
然后枚举所有可能的垃圾字符,直到你得到哈希下的固定点。通过鸽子原则,因为可以有更多的垃圾字符,并假设哈希是“随机的”,这将最终起作用。
但是这在任何合理的意义上都是不可能的,因为你试图找到一个带有S
属性的字符串Hash(S) = 83b90a07620ef578450c40a6d38bacc42de7ad2d
,根据定义,它不可能用于安全的哈希算法。