Python模块·Hashlib加密解密
2023-01-05 本文已影响0人
技术老男孩
一、hashlib模块定义:
- hashlib 用来替换 MD5 和 sha 模块,并使他们的API一致,专门提供hash算法
- 包括md5、sha1、sha224、sha256、sha384、sha512,使用非常简单、方便
二、hashlib常用方法:
序号 | 关键字 / 函数 / 方法 | 说明 |
---|---|---|
1 | hashlib.md5(“byte”) | 计算“byte”的md5值,并返回一个对象 |
2 | hashlib.md5() | 返回一个空数据md5的对象 |
3 | m.hexdigest() | 以16进制的方式,显示m的md5值 m是hashlib.md5返回的对象 |
4 | m.update(“byte”) | 更新m的md5值 |
- 一次计算:
import hashlib
m = hashlib.md5(b"12345")# 一次计算
# m.hexdigest()以十六进制的方式显示文件的md5值
print(m.hexdigest())
- 分批计算:
import hashlib
m1 =hashlib.md5()
m1.update(b"12")
m1.update(b"3")
m1.update(b"45")
# 打印显示文件的md5值
print(m1.hexdigest())
-
hashlib
使用的是字节串,hashlib.md5(b"str")
""
:字符串
b""
:字节串,二进制串
三、案例
需求:
- 编写用于计算文件md5值的脚本
- 文件名通过位置参数获得
- 打印出文件md5值
import hashlib
# 函数:将大文件内容转换md5
def md5_file(filename):
# 获取md5对象
md5_data = hashlib.md5()
with open(filename, mode="rb") as fr:
while True:
# 每次读取4k的文件内容
data = fr.read(4096)
if len(data) == 0:
break
# 更新md5的值
md5_data.update(data)
# 返回md5十六进制的值
return md5_data.hexdigest()
if __name__ == '__main__':
print(md5_file("/etc/hosts"))