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 第三方库。

点赞有美意,赞赏是鼓励