跳到主要内容

Python 程序查找文件的哈希值

要理解这个示例,你需要了解以下Python编程主题的知识:

哈希函数接受任意长度的数据,并返回固定长度的比特串。该函数的输出称为摘要信息。

它们在密码学中用于认证目的被广泛使用。有许多哈希函数,如MD5、SHA-1等。访问此页面了解更多关于密码学中的哈希函数

在这个示例中,我们将展示如何哈希一个文件。我们将使用SHA-1哈希算法。SHA-1的摘要长度为160位。

我们不会一次性读取文件中的所有数据,因为有些文件很大,一次性放入内存中可能会有问题。将文件分成小块可以使过程更加内存高效。

查找哈希的源代码

# Python程序:查找文件的SHA-1消息摘要
# 导入hashlib模块
import hashlib

def hash_file(filename):
"""这个函数返回传入文件的SHA-1哈希值"""

# 创建哈希对象
h = hashlib.sha1()

# 以二进制模式打开文件进行读取
with open(filename,'rb') as file:
# 循环直到文件结束
chunk = 0
while chunk != b'':
# 一次只读1024字节
chunk = file.read(1024)
h.update(chunk)

# 以十六进制形式返回摘要
return h.hexdigest()

message = hash_file("track1.mp3")
print(message)

输出

633d7356947eec543c50b76a1852f92427f4dca9

在这个程序中,我们以二进制模式打开文件。哈希函数在hashlib模块中可用。我们使用while循环循环直到文件结束。到达末尾时,我们得到空的字节对象。

在每次迭代中,我们只从文件中读取1024字节(这个值可以根据我们的需要更改),并更新哈希函数。

最后,我们使用hexdigest()方法以十六进制表示形式返回摘要信息。