gpt4 book ai didi

python - 如何找到 tarball 的一致散列

转载 作者:太空宇宙 更新时间:2023-11-04 03:52:45 26 4
gpt4 key购买 nike

如何创建 tarball 使其 md5 或 sha512 散列具有确定性?

我目前正在通过运行 tar --exclude-vcs --create --verbose --dereference --gzip --file mycode.tgz * 创建源代码文件目录的 tarball >,我想记录它的哈希值,这样我就可以将它用作检测 future 变化的指纹。

但是,我注意到如果我在不更改任何文件的情况下创建重复的压缩包,运行 Python hashlib.sha512(open('mycode.tgz').read()).hexdigest() 在每个存档上返回不同的哈希值。

这是因为 tar 的压缩算法不是确定性的吗?如果是这样,我如何才能有效地归档大量文件,以便我可以计算出一致的哈希值来检测更改?

最佳答案

生成确定性散列的 tar 版本可能是可能的,但大多数需要 tar 散列一致的打包系统并没有这样做,而是使用类似 pristine-tar 的东西。 .不幸的是,pristine-tar 对您的用例没有帮助。

但是,Git 版本控制系统非常擅长为目录树生成一致的哈希值(sha-1 而不是 sha-512)。

git add .
git write-tree

将打印一个一致的散列,除非发生某些变化。将跟踪文件内容和模式更改。

关于python - 如何找到 tarball 的一致散列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20413072/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com