Passlib 密码哈希库:Python 安全密码加密工具

面向初学者的在线Python训练器

轻松学习Python,无需理论负担。在浏览器中直接解决带自动检查的实践任务,无需安装任何东西。

开始课程

什么是 Passlib

Passlib 是一个专为安全密码哈希设计的强大 Python 库。它提供高级解决方案,将多种加密算法统一在简洁的接口下。全球开发者广泛使用它来构建可靠的认证系统。

Passlib 的核心目标是让开发者能够简单、安全地处理密码,通过直观的 API 隐藏复杂的加密操作。该库支持 30 多种哈希算法,从现代标准到旧版格式,确保兼容性。

为什么现代开发需要 Passlib

传统方法的缺陷

许多开发者仍在使用过时的密码哈希方法,如简单的 SHA-256 或 MD5。这些方法存在严重缺陷:

  • 缺乏对彩虹表的防护
  • 易受暴力破解攻击
  • 无法适应计算能力的增长
  • 缺乏时间攻击防护

现代方法的优势

Passlib 通过以下方式解决这些问题:

  • 自动为每个密码添加盐值
  • 可配置的迭代次数以减缓攻击速度
  • 通过恒定时间执行防止时间攻击
  • 支持算法间迁移,不丢失数据

安装与配置

基础安装

pip install passlib

安装额外算法支持

为使用现代哈希算法,建议安装额外依赖:

pip install passlib[bcrypt,argon2]

验证安装

安装后,可检查可用算法:

from passlib import registry
print(registry.list_crypt_handlers())

架构与核心组件

库结构

Passlib 采用模块化架构,包括:

  • 算法处理器 (Hash Handlers) — 具体算法的实现
  • 加密上下文 (CryptContext) — 集中管理配置
  • 算法注册表 (Registry) — 处理器注册与查找系统
  • 工具函数 — 安全操作的辅助功能

工作原理

该库遵循“默认安全”原则,自动应用最佳加密实践。每个算法封装在独立的处理器中,提供统一接口。

快速上手

简单哈希

from passlib.hash import pbkdf2_sha256

# 创建哈希
password = "my_secure_password"
hash_value = pbkdf2_sha256.hash(password)
print(f"哈希值: {hash_value}")

# 验证密码
is_valid = pbkdf2_sha256.verify(password, hash_value)
print(f"密码正确: {is_valid}")

使用 CryptContext

from passlib.context import CryptContext

# 创建包含多个算法的上下文
pwd_context = CryptContext(
    schemes=["bcrypt", "pbkdf2_sha256"],
    default="bcrypt",
    deprecated="auto"
)

# 哈希与验证
hash_value = pwd_context.hash("user_password")
is_valid = pwd_context.verify("user_password", hash_value)

支持的哈希算法

现代推荐算法

Argon2

2015 年密码哈希竞赛的获胜者。提供针对硬件攻击的防护,支持内存硬性计算,有效抵御 GPU 和 ASIC 攻击。

推荐