gpt4 book ai didi

Python:使用 Hashlib 生成文件的 MD5 哈希

转载 作者:太空宇宙 更新时间:2023-11-04 08:57:37 25 4
gpt4 key购买 nike

我正在尝试使用 Tkinter 模块中的 hashlib 生成文件的哈希值。我的目标:

第 1 步:- 按钮(单击),打开浏览器(单击您想要哈希的文件)。第 2 步:- 选择文件后,选择将“打印”散列的输出文件 (.txt)。第 3 步:- 重复并且没有冲突。

from tkinter.filedialog import askopenfilename
import hashlib

def hashing():
hash = askopenfilename(title="Select file for Hashing")
savename = askopenfilename(title="Select output")
outputhash = open(savename, "w")
hash1 = open(hash, "r")
h = hashlib.md5()
print(h.hexdigest(), file=outputhash)
love.flush()

它在某种程度上“有效”,它允许选择输入文件和输出文件。它将散列打印到输出文件中。

但是 - 如果我选择任何不同的文件,我每次都会得到相同的哈希值。

我是 Python 的新手,它真的难倒了我。

提前致谢。


感谢您的所有评论。

我发现了问题,这是我的新代码:

from tkinter.filedialog import askopenfilename
import hashlib

def hashing():
hash = askopenfilename(title="Select file for Hashing")
savename = askopenfilename(title="Select output")
outputhash = open(savename, "w")
curfile = open(hash, "rb")
hasher = hashlib.md5()
buf = curfile.read()
hasher.update(buf)
print(hasher.hexdigest(), file=outputhash)
outputhash.flush()

这段代码有效,你们太棒了。 :)

最佳答案

在你的例子中,你做了空字符串的摘要,你可能会得到:d41d8cd98f00b204e9800998ecf8427e

我用这种方法来消化,这对大文件更好(参见 here )。

   md5 = hashlib.md5()
with open(File, "rb") as f:
for block in iter(lambda: f.read(128), ""):
md5.update(block)
print(md5.hexdigest())

关于Python:使用 Hashlib 生成文件的 MD5 哈希,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28856737/

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