在Python 3中,从命令行可执行文件计算二进制输出的校验和

时间:2018-05-22 12:49:47

标签: python python-3.x popen checksum

我正在使用名为" exiftool"的工具。从文件中提取二进制JPG。我想从那个文件计算一个sha512和。有什么好办法呢?

我提取二进制JPG的功能如下:

def getVisSig(filename):
""" Calculates visual signature using
    imagemagick package. returns signature
"""

print("Calculating VisSig on %s" % filename)
result = subprocess.Popen(["exiftool","-b","-PreviewImage",
                           filename,], stdout=subprocess.PIPE)

输出是二进制的。我应该如何处理这个以计算sha512总和?我以为我可以在命令行中将输出传递给sha512sum并将结果字符串读入Python,但不确定是否有更好的方法?

1 个答案:

答案 0 :(得分:1)

查看https://docs.python.org/3/library/hashlib.html

例如:

import hashlib

hashlib.sha512(b"asdfasdf").hexdigest()
# output: 'ce57d8bc990447c7ec35557040756db2a9ff7cdab53911f3c7995bc6bf3572cda8c94fa53789e523a680de9921c067f6717e79426df467185fc7a6dbec4b2d57'

所以你可以:

hashlib.sha512(result).hexdigest()