在本文中,您将学习查找文件的哈希值并显示它。
要理解此示例,您应该了解以下Python编程主题:
散列函数获取任意数量的数据,并返回固定长度的位字符串。函数的输出称为摘要消息。
它们被广泛用于密码学中以进行认证。有许多哈希函数,例如MD5,SHA-1等。请参考此页面,以了解有关密码学中哈希函数的更多信息。
在此示例中,我们将说明如何对文件进行哈希处理。我们将使用SHA-1哈希算法。SHA-1的摘要的长度为160位。
我们不会一次全部提供文件中的数据,因为某些文件非常大,无法一次全部放入内存中。将文件分成小块将提高进程内存的效率。
# Python程序来查找文件的SHA1消息摘要 # 导入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()方法以十六进制表示形式返回摘要消息。