gpt4 book ai didi

python - 在python中计算哈希并将其添加到文件中

转载 作者:太空宇宙 更新时间:2023-11-03 10:59:25 24 4
gpt4 key购买 nike

检查文件是否已被修改的一种方法是计算并存储文件的哈希值(或校验和)。然后在任何时候都可以重新计算哈希值并将其与存储的值进行比较。

我想知道是否有一种方法可以将文件的哈希值存储在文件本身中?我在考虑文本文件。

计算散列的算法应该是迭代的,并考虑将散列添加到正在为其计算散列的文件中……有意义吗?有什么可用的吗?

谢谢!

编辑: https://security.stackexchange.com/questions/3851/can-a-file-contain-its-md5sum-inside-it

最佳答案

from Crypto.Hash import HMAC
secret_key = "Don't tell anyone"
h = HMAC.new(secret_key)
text = "whatever you want in the file"
## or: text = open("your_file_without_hash_yet").read()
h.update(text)
with open("file_with_hash") as fh:
fh.write(text)
fh.write(h.hexdigest())

现在,正如一些人试图指出的那样,尽管他们看起来很困惑 - 你需要记住这个文件的末尾有散列,并且散列本身不是散列的一部分。所以当你想检查文件时,你会按照以下方式做一些事情:

end_len = len(h.hex_digest())
all_text = open("file_with_hash").read()
text, expected_hmac = all_text[:end_len], all_text[end_len:]
h = HMAC.new(secret_key)
h.update(text)
if h.hexdigest() != expected_hmac:
raise "Somebody messed with your file!"

应该清楚的是,单独 并不能确保您的文件没有被更改;典型的用例是加密您的文件,但采用明文的哈希值。这样,如果有人更改哈希值(在文件末尾)或尝试更改消息中的任何字符(加密部分),事情就会不匹配,您就会知道发生了一些变化。

恶意行为者将无法更改文件并修复散列以匹配,因为他们需要更改一些数据,然后使用您的私钥重新散列所有内容。只要没有人知道您的私钥,他们就不知道如何重新创建正确的哈希。

关于python - 在python中计算哈希并将其添加到文件中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35940147/

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