【问题标题】:Python: Generating a MD5 Hash of a file using HashlibPython:使用 Hashlib 生成文件的 MD5 哈希
【发布时间】:2015-03-04 14:17:13
【问题描述】:

我正在尝试使用 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 新手,这让我很困惑。

提前致谢。


感谢你们所有的cmets。

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

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()

这段代码有效,你们摇滚。 :)

【问题讨论】:

  • 是的,因为你得到的哈希是一个空字符串的哈希。阅读文档。您需要初始化哈希:h.update(some_data).
  • 您根本没有对文件进行哈希处理。您没有将您选择的文件名传递给 hashlib,因此您正在散列一个空值。我敢打赌哈希是d41d8cd98f00b204e9800998ecf8427e,这是md5('') 会返回的。
  • 你说的完全正确!所以我进一步研究了它,幸运的是我发现了一些旧东西。 (在 main 中查找新代码)

标签: python python-3.x hash md5


【解决方案1】:

在您的情况下,您对空字符串进行摘要,可能会得到: 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())

【讨论】:

  • 感谢您使用rb 而不是r
【解决方案2】:

一个很简单的方法

from hashlib import md5

f=open("file.txt","r")
data=f.read()
f.close()
Hash=md5(data).hexdigest()
out=open("out.txt","w")
out.write(Hash)
out.close()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-07-26
    • 2015-08-14
    • 1970-01-01
    • 2021-11-19
    • 1970-01-01
    • 1970-01-01
    • 2017-05-24
    相关资源
    最近更新 更多