Message Digest Algorithm MD5(中文名为消息摘要算法第五版)为计算机安全领域广泛使用的一种散列函数,用以提供消息的完整性保护。MD5即 Message-Digest Algorithm 5(信息-摘要算法5),用于确保信息传输完整一致,是计算机广泛使用的杂凑算法之一(又译摘要算法、哈希算法),主流编程语言普遍已有MD5实现。
在Python3的标准库中,已经移除了MD5模块,而关于hash加密算法都放在hashlib这个标准库中,如SHA1、SHA224、SHA256、SHA384、SHA512和MD5算法等。
一、字符串MD5加密
#!/usr/bin/env python import hashlib data1 = 'Hello World'.encode('UTF-8') data2 = '中华人民共和国'.encode('UTF-8') result1 = hashlib.md5(data1).hexdigest() result2 = hashlib.md5(data2).hexdigest() print(result1) print(result2)
b10a8db164e0754105b7a99be72e3fe5 025fceab9418be86066b60a71bc71485
二、小文件MD5加密
hashlib.md5(文件内容)实现了对文件的MD5计算,注意参数为文件内容而不是文件路径。
#!/usr/bin/env python import hashlib with open('hello.py', 'rb') as f: data = f.read() print(hashlib.md5(data).hexdigest())
a70580c1d189d528a111250e3f49010b
三、大文件MD5加密
MD5计算时文件数据是放在内存中的,当我们计算一个大文件时,可以用update方法进行分步计算,每次添加部分文件数据进行计算,减少内存占用。
#!/usr/bin/env python import hashlib md5 = hashlib.md5() with open('CentOS-8-x86_64-1905-dvd1.iso', 'rb') as f: while True: data = f.read(4096) if not data: break md5.update(data) print(md5.hexdigest())
e15fb0e51726de0a4128448b9bd63e7b