2021/1/11 hashlib模块(python)
hashlib模块(主要作用于密码加密和文件一致性校验)
hashlib加密模式
1.将一个bytes型数据结构 通过hashlib进行加密返回 一个非明文数据
2.过程不可逆
3.相同的bytes类型的数据通过相同加密方法得到的数据绝对相同
4.不相同的bytes类型数据通过相同加密方法得到的数据绝对不同
hashlib模块中
hashlib.md5().update()方法将bytes型数据进行磁盘存储,创造一个磁盘空间,不占用内存。
hashlib.md5().hexdigest()方法将update容器内的bytes数据进行加密
MD5信息摘要算法
import hashlib
ret = hashlib.md5() num = "123" num = num.encode("utf-8") ret.update(num) print(ret.hexdigest())
固定加盐模式,进行加密对原有数加固定字符来提高原密码的复杂度,防止撞库
import hashlib
ret = hashlib.md5("**@@".encode('utf-8')) num = "123" num = num.encode("utf-8") ret.update(num) print(ret.hexdigest())
动态加盐模式,进行加密对原有数据加动态的字符来提高密码的复杂度,防止撞库
import hashlib username = input("输入账号").strip() password = input("输入密码").strip() ret = hashlib.md5(username[::2].encode('utf-8')) ret.update(password.encode('utf-8')) print(ret.hexdigest())
其它密码加密用法与MD5相同
其它密码主要为sha系列,后面数字版本越大,加密模式越复杂,效率越低
文件一致性校验
普通版
import hashlib ret = hashlib.md5() with open('1.txt', 'rb') as f1: rb = f1.read() ret.update(rb) print(ret.hexdigest()) ret = hashlib.md5() with open('2.txt', 'rb') as f1: rb = f1.read() ret.update(rb) print(ret.hexdigest())
循环读取版,内存使用率越低
import hashlib def md5_file(file): ret = hashlib.md5() with open(file, mode='rb') as f1: while 1: context = f1.read(1024) if context: ret.update(context) else: return ret.hexdigest()

浙公网安备 33010602011771号