如何在Python中获取文件的rmd160摘要(不使用子进程)?

1 投票
2 回答
602 浏览
提问于 2025-04-18 10:20

我知道可以用 hashlib.sha256 来获取一个文件的 sha256 摘要,也可以通过 subprocess 调用 openssl rmd160 <myfile> 来获取 rmd160 摘要,但有没有一个 Python 包可以直接 import,提供一个方法来获取 rmd160 摘要呢?

(rmd160 是在 Macports Portfile 中推荐使用的校验和 [1].)

2 个回答

2

你可以使用 hashlib.new(name) 通过算法名称来创建哈希对象。根据我对文档(无论是Python 2还是3)的理解,这个过程是交给OpenSSL来处理的。OpenSSL支持“rmd160”和“ripemd160”这两个名称。

我使用的是

def rmd160(fname):
    BLOCKSIZE = 65536
    h = hashlib.new("rmd160")
    with open(fname, 'rb') as f:
        buf = f.read(BLOCKSIZE)
        while buf:
            h.update(buf)
            buf = f.read(BLOCKSIZE)
    return h.hexdigest()
1

这个东西不在标准库里,但 pycrypto支持它

如果你在一个可以使用编译器和所需依赖的unix系统上,你只需要 pip install pycrypto 就可以了。如果你是在Windows上,可以去找一些 第三方预编译的版本

撰写回答