hashlib模块概念
什么是哈希算法呢?
哈希算法又称摘要算法、散列算法。它通过一个函数,把任意长度的数据转换为一个长度固定的数据串,通常用16进制的字符串表示。只要传入的内容一样,得到的hash值必然一样。哈希算法是一个单向函数,无法反推。
Python的hashlib模块提供了常见的哈希算法,如 SHA1, SHA224, SHA256, SHA384, SHA512 ,MD5 算法等等。
如何使用?
# 法一
import hashlib # 导入hash库
# 1.造出hash工厂
m=hashlib.md5() # 括号内也可以传值,类型也要求是bytes类型
# 2.运送原材料
m.update('你好呀!'.encode('utf-8'))
# 3.产出hash值
print(m.hexdigest())
>>9e49eb8e75b9a87424e388b862ea5f83
# 法二
import hashlib # 导入hash库
m=hashlib.md5('你'.encode('utf-8')) # 括号内也可以传值,类型也要求是bytes类型
m.update('好呀!'.encode('utf-8')) # 把要转码的内容拆开,不影响结果
print(m.hexdigest())
>>9e49eb8e75b9a87424e388b862ea5f83
应用实例
文件一致性校验,可以拷贝一个文件放在两个不同的盘中,然后通过判断两个文件的hash值是否相等,判断两个文件是否是同一个文件。
import hashlib
m = hashlib.md5()
with open(r'G:/logging模块配图.png','rb') as f:
for line in f:
m.update(line)
print(m.hexdigest())
*********************************************************
import hashlib
m = hashlib.md5()
with open(r'H:/logging模块配图.png','rb') as f:
for line in f:
m.update(line)
print(m.hexdigest())