hashlib 是 Python 的标准加密哈希库,提供了多种安全哈希算法(如 MD5、SHA 系列)用于对数据进行哈希计算。哈希函数(Hash Function)将任意长度的数据映射为固定长度的“摘要”值,可用于验证数据完整性、密码存储、唯一标识生成。
常见应用场景:
(1)文件完整性校验(如对比 MD5 值)。
(2)用户密码加密存储(不可逆)。
(3)生成唯一标识符(如内容哈希)。
(4)加密协议中的消息摘要算法(如 HMAC)。
◆ ◆ ◆
核心概念
1、哈希算法
如 md5, sha1, sha256, sha512 等,可用于生成固定长度的摘要值。
2、不可逆性
哈希值不能反推出原始内容,常用于加密验证场景。
3、相同输入 → 相同输出
相同内容总会产生相同哈希值,任何改动都会引起哈希变化。
4、哈希对象
通过 hashlib 提供的构造方法创建,用于逐步更新数据或一次性生成摘要。
5、二进制与十六进制输出
可用 .digest() 获取原始字节值,或用 .hexdigest() 获取可读的十六进制字符串。
◆ ◆ ◆
应用举例
例 1: 计算字符串的 MD5 哈希值
import hashlib
text = "hello world"
md5_hash = hashlib.md5(text.encode())
print(md5_hash.hexdigest()) # e.g. 5eb63bbbe01eeed093cb22bb8f5acdc3例 2:生成 SHA-256 哈希值(更安全)
import hashlib
data = "mediaTEA".encode()
sha256 = hashlib.sha256(data).hexdigest()
print(sha256)例 3:分步更新数据(如大文件处理)
import hashlib
hasher = hashlib.sha1()
hasher.update("first chunk".encode())
hasher.update("second chunk".encode())
print(hasher.hexdigest())例 4:计算文件的 SHA256 校验值
import hashlib
def hash_file(path):
h = hashlib.sha256()
with open(path, 'rb') as f:
for chunk in iter(lambda: f.read(4096), b''):
h.update(chunk)
return h.hexdigest()
print(hash_file("example.txt"))例 5:列出所有支持的算法
import hashlib
print(hashlib.algorithms_guaranteed)
# 输出如 {'sha256', 'sha512', 'md5', ...}◆ ◆ ◆
常用函数速览
hashlib.md5(data=None)
创建一个 MD5 哈希对象。
参数:
data(可选):初始数据(bytes 类型)
返回:hashlib.Hash 对象
hashlib.sha1(data=None) / hashlib.sha256(data=None) / ...
创建指定算法的哈希对象,参数与返回值与 md5() 相同。
Hash.update(data)
将数据追加到当前哈希对象中进行计算。
参数:data 为字节串(bytes 类型)
返回:无
Hash.digest()
返回原始的二进制摘要值。
参数:无
返回:bytes 类型
Hash.hexdigest()
返回可读的十六进制字符串摘要。
参数:无
返回:str 类型
hashlib.new(name, data=b'')
通过算法名称动态创建哈希对象。
参数:
name:哈希算法名(如 "md5", "sha256")
data:初始数据(可选)
返回:Hash 对象
hashlib.algorithms_guaranteed
当前平台一定支持的哈希算法集合(set 类型)。
hashlib.algorithms_available
当前解释器可用的全部算法集合(包括操作系统支持的)。
◆ ◆ ◆
补充说明
1、hashlib 不可用于加密解密,仅用于不可逆的哈希摘要计算。
2、对于密码存储建议使用 hashlib.pbkdf2_hmac() 等加强算法,或使用 bcrypt、scrypt 等专业库。
3、若需安全对称加密,可使用 cryptography 第三方库。
“点赞有美意,赞赏是鼓励”
热门跟贴