我想在我的目录中创建一个文件,其中该文件包含该目录的sha256总和,包括该文件,以及创建文件之后。这里的困难在于使用所述sha256更新文件会影响目录的sha256。这可能吗?
我可以看到这几乎是要求计算机预测未来,但我想知道是否有一些递归算法来做到这一点。例如,如果对象的校验和与对象的校验和之间存在一些一致的关系,则更改了一个字节。
这是一个好奇心问题来自于这个问题:我试图为缺少.git目录的存储库重新创建git describe --tags
的输出(可能是将这些数据保存在存储库中)。
答案 0 :(得分:0)
这是不可能的。甚至可能没有解决方案。举一个简单的例子:假设SHA256哈希值只有1位而不是256位。假设,如果我们将哈希0
放入文件中,整个目录的哈希值为1
;如果我们将1
放入文件中,则整个目录的哈希值为0
。然后没有解决方案。完整的256位散列可能会发生同样的事情。我不确定这种可能性。
如果有解决方案,您最终可以通过详尽搜索所有可能的校验和来找到它。根据安全哈希的本质,它不会明显快于此。但这可能会持续到太阳变成红巨星并吞噬地球。
为了改善您的实际情况(请注意XY problem),您可以尝试指示构建系统在构建之前将git rev-parse HEAD
的结果粘贴到源文件中,或让程序在运行时。