首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >创建MD5哈希的ZipFile

创建MD5哈希的ZipFile
EN

Stack Overflow用户
提问于 2016-09-01 16:05:48
回答 2查看 6.4K关注 0票数 2

我想要创建一个MD5哈希的ZipFile,而不是其中的一个文件。然而,ZipFile对象并不容易转换为流。

代码语言:javascript
复制
from hashlib import md5
from zipfile import ZipFile

zipped = ZipFile(r'/Foo/Bar/Filename.zip')
hasher = md5()
hasher.update(zipped)

return hasher.hexdigest()

上面的代码生成错误:TypeError: must be convertible to a buffer, not ZipFile

是否有一种简单的方法可以将ZipFile转换为流?

这里没有安全问题,我只需要一种简单的快速方法来确定我以前是否见过文件。hash(zipped)工作得很好,但如果可能的话,我想要一些更健壮的东西。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-09-01 16:20:52

这个函数应该返回任何文件的MD5散列,只要它的路径(需要pycrypto模块):

代码语言:javascript
复制
from Crypto.Hash import MD5


def get_MD5(file_path):

    chunk_size = 8192

    h = MD5.new()

    with open(file_path, 'rb') as f:
        while True:
            chunk = f.read(chunk_size)
            if len(chunk):
                h.update(chunk)
            else:
                break

    return h.hexdigest()

print get_MD5('pics.zip') # example

输出:

代码语言:javascript
复制
6a690fa3e5b34e30be0e7f4216544365

关于墓穴的信息

票数 3
EN

Stack Overflow用户

发布于 2016-09-01 16:21:01

只需将ZipFile作为常规文件打开即可。下面的代码在我的机器上工作。

代码语言:javascript
复制
from hashlib import md5
m = md5()
with open("/Foo/Bar/Filename.zip", "rb") as f:
    data = f.read() #read file in chunk and call update on each chunk if file is large.
    m.update(data)
    print m.hexdigest()
票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39276248

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档