MD5
MD5 是消息摘要算法(Message Digest Algorithm)的一种,它接受一段信息(输入)并输出一个固定长度的哈希值(通常是128位),这个字符串是输入数据的唯一标识。如果输入数据发生改变,那么生成的MD5值也会不同。
起因:客户端读取礼物资源需要计算MD5,开发又不愿意协助,dddd 。 于是自己研究了下, 根据礼物资源(zip文件)进行计算
基于字符串的计算
import hashlib
str = "abdc"
hash_md5 = hashlib.md5()
# 字符串转换成字节
hash_md5.update(str.encode())
# 获取16进制哈希值
hex_dig = hash_md5.hexdigest()
print(f"Md5 是: {hex_dig}")
下面是基于zip文件的计算
import hashlib
def calculate_md5(file_path):
# 创建一个 md5 hash对象
hash_md5 = hashlib.md5()
# 打开文件, 并分块读取内容到hash对象中
with open(file_path, "rb") as file:
# iter 创建一个迭代器对象 file.read(4096) 从file对象中读取最多4096个字节
# iter()的第二个参数b""是一个哨兵值(sentinel value)。当file.read(4096)返回这个值时,迭代将停止。
for chunk in iter(lambda: file.read(4096), b""):
# update方法 向hash对象中添加数据
hash_md5.update(chunk)
# 获取16进制 哈希值
md5_value = hash_md5.hexdigest()
return md5_value
zip_file = 'xx.zip'
md5_zip = calculate_md5(zip_file)
print(f"生成的 MD5 是: {md5_zip}")