如何在Python中获取文件的rmd160摘要(不使用子进程)?
我知道可以用 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上,可以去找一些 第三方预编译的版本。