目录中的文件包含整个目录的当前sha-256

时间:2017-06-05 15:53:49

标签: git githooks sha256

我想在我的目录中创建一个文件,其中该文件包含该目录的sha256总和,包括该文件,以及创建文件之后。这里的困难在于使用所述sha256更新文件会影响目录的sha256。这可能吗?

我可以看到这几乎是要求计算机预测未来,但我想知道是否有一些递归算法来做到这一点。例如,如果对象的校验和与对象的校验和之间存在一些一致的关系,则更改了一个字节。

这是一个好奇心问题来自于这个问题:我试图为缺少.git目录的存储库重新创建git describe --tags的输出(可能是将这些数据保存在存储库中)。

1 个答案:

答案 0 :(得分:0)

这是不可能的。甚至可能没有解决方案。举一个简单的例子:假设SHA256哈希值只有1位而不是256位。假设,如果我们将哈希0放入文件中,整个目录的哈希值为1;如果我们将1放入文件中,则整个目录的哈希值为0。然后没有解决方案。完整的256位散列可能会发生同样的事情。我不确定这种可能性。

如果有解决方案,您最终可以通过详尽搜索所有可能的校验和来找到它。根据安全哈希的本质,它不会明显快于此。但这可能会持续到太阳变成红巨星并吞噬地球。

为了改善您的实际情况(请注意XY problem),您可以尝试指示构建系统在构建之前将git rev-parse HEAD的结果粘贴到源文件中,或让程序在运行时。