python3求取大文件sha1值和md5

小文件

import hashlib
import base64

filePath = "test.txt"
with open(filePath, "rb") as f:
    fileData = f.read()
sha1 = hashlib.sha1()
sha1.update(fileData)
fileHash = base64.b64encode(sha1.digest()).decode('utf-8 ')
print(fileHash)
print(base64.b64decode(fileHash).hex())

在linux中,可以使用指令sha1sum test.txt验证

大文件

import hashlib
import base64

filePath = "test.txt"
sha1 = hashlib.sha1()
with open(filePath, "rb") as f:
    while True:
        fileData = f.read(2048)
        if not fileData:
            break
        sha1.update(fileData)
fileHash = base64.b64encode(sha1.digest()).decode('utf-8 ')
print(fileHash)
print(base64.b64decode(fileHash).hex())

同理,求取MD5只需要把 sha1 = hashlib.sha1() 替换为 md5 = hashlib.md5(), 相应的sha1 也替换为 md5 即可
此外,获取十六进制编码也可以直接用 sha1.hexdigest() 和 md5.hexdigest()
参考: python 计算大文件的md5、sha1值

posted @ 2021-11-04 14:51  BrianSun  阅读(667)  评论(0编辑  收藏  举报