4-07python语法基础-内置模块-hashlib模块
hashlib模块
import hashlib
# 不加盐
md5 = hashlib.md5() # 创建一个md5算法的对象
md5.update('123456'.encode('utf-8'))
print(md5.hexdigest()) # 这个值永远不会变,容易被人暴力破解,要加盐
# 固定加盐
md5 = hashlib.md5('SOS'.encode('utf-8')) # 固定的盐还是可以破解的,
md5.update('123456'.encode('utf-8'))
print(md5.hexdigest())
# 动态加盐
user = 'sos'
print(user[1::-1])
md5 = hashlib.md5(user[1::-1].encode('utf-8'))
md5.update('123456'.encode('utf-8'))
print(md5.hexdigest())
# sha算法,和md5的用法一样,不过常用的还是md5,sha算法会慢一点
sha1 = hashlib.sha1('SOS'.encode('utf-8'))
sha1.update('123456'.encode('utf-8'))
print(sha1.hexdigest())
# 文件一致性校验
def md5file(file):
md5=hashlib.md5() # 做文件一致性校验不需要加盐
with open(file,'rb') as f:
# text = f.read()
# md5.update(text)
# 对于大文件,不能一次性读取,
while True:
text = f.read(1024) # 每次读取1024字节
if text:
md5.update(text)
else:
break
return md5.hexdigest() # 一次性读取和循环读取的结果是一样的
print('*' * 50)
print(md5file('test.txt'))
print(md5file('text2.txt'))
技术改变命运