Python语言程序设计之MD5加密

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

Leave a Reply

Your email address will not be published. Required fields are marked *