内置模块-hashlib模块
hashlib 摘要模块
- 有多种算法的模块
- 每一个算法都帮助我们完成同一件事情
- 给一个字符串进行计算得到一串密文的结果
- 这个过程不可逆
- 对于同一个字符串,同一种算法 计算的结果永远是相同的
- 对于不同的字符串,计算的结果总是不同的
import hashlib
hashlib.md5 # 最通用\最快捷\相对简单
hashlib.sha1 # 已经开始被大家广泛应用
md5_obj = hashlib.md5()
md5_obj.update('zhangsan'.encode('utf-8')) #pycharm 不会做提示
ret = md5_obj.hexdigest()
print(ret)
加固定的盐
md5_obj = hashlib.md5('任意的字符串'.encode('utf-8'))
md5_obj.update('123456'.encode('utf-8'))
ret = md5_obj.hexdigest()
print(ret)
动态加盐 - 最安全的存储密码的方式
username=input(“请输入你的用户名”)
md5_obj = hashlib.md5(username.encode('utf-8'))
md5_obj.update(pwd.encode('utf-8'))
ret = md5_obj.hexdigest()
print(ret)
文件一致性校验
import hashlib
with open('file','rb') as f :
content = f.read()
md5_obj = hashlib.md5()
md5_obj.update(content)
print(md5_obj.hexdigest())
with open('file1','rb') as f :
content = f.read()
md5_obj = hashlib.md5()
md5_obj.update(content)
print(md5_obj.hexdigest())
文件非常大 大到4g的文件,可分开
import hashlib md5_obj = hashlib.md5() md5_obj.update('hello,world'.encode('utf-8')) print(md5_obj.hexdigest()) md5_obj = hashlib.md5() md5_obj.update('hello,'.encode('utf-8')) md5_obj.update('world'.encode('utf-8')) print(md5_obj.hexdigest()) 执行结果: 3cb95cfbe1035bce8c448fcaf80fe7d9 3cb95cfbe1035bce8c448fcaf80fe7d9
import hashlib
def md5_file():
md5_obj = hashlib.md5()
with open('file','rb') as f :
for line in f:
md5_obj.update(line)
print(md5_obj.hexdigest())
md5_file()
执行结果:
d41d8cd98f00b204e9800998ecf8427e