Python哈希值的相关方法均包含在hashlib库中。hashlib库提供生成哈希值的基础方法,对于一般用途应该足够了。当然也可以进行自定义,在hashlib提供的方法的基础上,编写一些特殊需求的代码模块module。
在hashlib库中,一般是先构造一个哈希生成器 -- generator,通过生成器的update方法传入比特数据,最后由digest或hexdigest方法产生哈希值。digest方法提供的是二进制的,hexdigest生成的是十六进制的字符串。
生成字符串的哈希值,可通过字符串本身自带的方法转换为二进制数据:[str].encode('utf-8')。字符串自带的encode方法默认使用UTF-8编码集。
文件的哈希值生成方法与字符串的类似。将文件以二进制的数据格式读取,赋值于变量,然后通过update方法传入生成器处理得出哈希值。
"""
@author: MR.N
@created: 2021/07/19 Mon. 20:35
@version: 1.0
@free
"""
import hashlib
# 生成字符串的MD5值
def md5(content=None):
if content is None:
return ''
md5gen = hashlib.md5()
md5gen.update(content.encode())
md5code = md5gen.hexdigest()
md5gen = None
return md5code
# 生成文件的MD5值
def md5_file(content=None):
if content is None:
return ''
md5gen = hashlib.md5()
with open(content, 'wb') as fd:
data = fd.read()
md5gen.update(data)
md5code = md5gen.hexdigest()
md5gen = None
return md5code
# 生成字符串的SHA256值
def sha256(content=None):
if content is None:
return ''
sha256gen = hashlib.sha256()
sha256gen.update(content.encode())
sha256code = sha256gen.hexdigest()
sha256gen = None
return sha256code
# 生成文件的SHA256值
def sha256_file(content=None):
if content is None:
return ''
sha256gen = hashlib.sha256()
with open(content, 'wb') as fd:
data = fd.read()
sha256gen.update(data)
sha256code = sha256gen.hexdigest()
sha256gen = None
return sha256code