RFC 1321中定义的MD5是一种哈希算法,可将输入转换为哈希值的固定128位(16字节)长度。
注意
MD5不是抗冲突的–两个不同的输入可能会产生相同的哈希值。 阅读此MD5漏洞 。
在Python中,我们可以使用hashlib.md5()从字符串生成MD5哈希值。
1. Python MD5哈希
import hashlib
result = hashlib.md5(b"Hello MD5").hexdigest()
print(result)
result = hashlib.md5("Hello MD5".encode("utf-8")).hexdigest()
print(result)
m = hashlib.md5(b"Hello MD5")
print(m.name)
print(m.digest_size) # 16 bytes (128 bits)
print(m.digest()) # bytes
print(m.hexdigest()) # bytes in hex representation
输出量
Terminal
e5dadf6524624f79c3127e247f04b548
e5dadf6524624f79c3127e247f04b548
md5
16
b'\xe5\xda\xdfe$bOy\xc3\x12~$\x7f\x04\xb5H'
e5dadf6524624f79c3127e247f04b548
2. Python MD5文件校验和
这是一个文本文件
c:\\test\\readme.txt
Hello MD5
这是读取文件并使用md5哈希内容的Python代码。
import hashlib
def md5checksum(fname):
md5 = hashlib.md5()
# handle content in binary form
f = open(fname, "rb")
while chunk := f.read(4096):
md5.update(chunk)
return md5.hexdigest()
result = md5checksum("c:\\test\\readme.txt")
print(result)
输出量
Terminal
e5dadf6524624f79c3127e247f04b548